
Ich möchte file2
an anhängen file1
. Bevor ich das mache, muss ich eine benutzerdefinierte Zeilennummer hinzufügen file2
.
file1
1 abc
2 bcd
3 efg
file2
mkh
dfd
aad
Fügen Sie die Zeilennummer wie
file2
folgt hinzufile1
.4 mkh 5 dfd 6 aad
Anhängen
file2
file1
cat file2 >> file1
Wie kann ich die Zeilennummer in file2
die oben gezeigte einfügen?
Antwort1
nl -v "$((1+$(wc -l < file1)))" file2 >> file1
nl
ist ein Werkzeug, umNUmbermines einer Datei. Der -v
Schalter liefert den Startwert der Zeilennummern. Ich verwende eine Subshell und , wc
um die Zeilenanzahl von zu erhalten file1
, füge eins hinzu, um die Startzeilennummer für zu erhalten file2
, und verkette die Ergebnisse an das Ende von file1
.
Beachten Sie, dass wc -l file1
die Zeilenanzahl gefolgt vom Dateinamen gedruckt würde, da wir aber wc
die Standardeingabe von umgeleitet haben, sodass sie von kommt file1
, wc
weiß das Tool selbst nichts über den Dateinamen für file1
und druckt nur die Zeilenanzahl (mit einigen Leerzeichen, die in diesem Kontext keine Rolle spielen).
Das kann gemacht werdenleichtsauberer, indem Sie einfach awk
und verwenden nl
:
nl -v $(awk 'END { print NR + 1 }' file1) file2 >> file1
Antwort2
Mit awk
:
awk -v nl=$(wc -l <f1.txt) '{print NR+nl " " $0}' f2.txt
$(wc -l <f1.txt)
erhält die Anzahl der Zeilen in der Dateif1.txt
, wir übergeben dies alsnl
Variable anawk
print NR+nl " " $0
druckt jeden Datensatz vonf2.txt
mit der entsprechenden Zeilennummer, die der Variablen hinzugefügt wirdnl
, dann ein Leerzeichen und dann den gesamten Datensatz
Beispiel:
% cat f1.txt
1 abc
2 bcd
3 efg
% cat f2.txt
mkh
dfd
aad
% awk -v nl=$(wc -l <f1.txt) '{print NR+nl " " $0}' f2.txt
4 mkh
5 dfd
6 aad
Antwort3
Eine andere awk
Lösung:
$ awk 'NF==1{print ++c" "$1 >> "file1"} NF>1{c=$1}' file1 file2
$ cat file1
1 abc
2 bcd
3 efg
4 mkh
5 dfd
6 aad
Allgemeiner Fall:
$ cat file1
1 abc x
2 bcd y
3 efg z
$ cat file2
mkh 1a
dfd foo
aad bar
$ awk 'NR==FNR{c=$1; next} {print ++c" "$0 >> "file1"}' file1 file2
$ cat file1
1 abc x
2 bcd y
3 efg z
4 mkh 1a
5 dfd foo
6 aad bar
Antwort4
Eine ganz einfache Antwort:
$ Katze Testtext 1. Der schnelle braune Fuchs sprang über den faulen Hund. $ cat testText | tr ' ' '\n' | sort >testText2 $ cat -n Testtext Testtext2 1 1. Der schnelle braune Fuchs sprang über den faulen Hund. 2 1. 3 braun 4 Hunde. 5 Fuchs 6 sprang 7 faul 8 vorbei 9 schnell 10 die 11 Die