Wie kann ich eine Zeilennummer und einen Tabulator an den Anfang jeder Zeile einer Textdatei anhängen?
Wie kann ich eine Zeilennummer und einen Tabulator an den Anfang jeder Zeile einer Textdatei anhängen?
Antworten:
awk '{printf "%d\t%s\n", NR, $0}' < filename
awk '{print NR, "\t", $0}'
.
nl
ist auch falsch. Im Quellcode werden niemals die richtigen Zeilennummern angegeben, da Zeilen mit Leerzeichen nicht gezählt werden.
Der Befehl nl sollte dies tun, es wird jedoch auch ein Leerzeichen vor der Zeilennummer eingefügt. Es ist Teil von Linux Coreutils.
nl lines.txt
1 $bkWTN
2 $cV8$.
nl
, das Leerzeichen vor der Nummer wegzulassen. Verwenden Sie einfach die -w1
Option, um
-nln
Sie linksbündig ausrichten, wenn Sie nicht möchten, dass die Leerzeichen vor den Zeilennummern stehen. Auch, um eine Registerkarte angeben Separator Sie könnten verwenden -s$'\t'
oder -s' '
(Einsatz einer Lasche zwischen den einfachen Anführungszeichen mit ctrl+v
dann tab
).
nl -w1
(von GNU 8,24 coreutils) hat nicht die Zeilennummern gestutzt.
sed = test.txt | sed 'N;s/\n/\t/'
Der Befehl "sed =" gibt die Zeilennummer gefolgt von einem Wagenrücklauf und der nächsten Zeile aus.
Der Ausdruck "N; s / \ n / \ t /" nimmt jede Zeile, ruft die nächste Zeile ab (dh Zeilennummer und Zeile) und ersetzt den Wagenrücklauf durch ein Tabulatorzeichen.
\n
es sich um Zeilenvorschub (im Allgemeinen nur als "Zeilenvorschub" bezeichnet, da er zum ersten Mal unter Unix verbreitet war) und Zeilenumbruch \r
handelt. Windows verwendet \r\n
(auch bezeichnet als CRLF
).
Wie wäre es mit
cat -n somefile.txt
?
OK, hier ist eine einzeilige Bash-Lösung:
$ IFS=$'\n';x=1;for l in $(<file.txt);do echo -e "$x\t$l";((x+=1));done
$ IFS=
Die erste IFS-Einstellung weist bash an, jeweils eine vollständige Zeile zu lesen. Die zweite Zeile setzt das IFS auf den Standard zurück.
Als zusätzlichen Bonus läuft es komplett in Ihrer Shell und führt kein Programm aus!
Ok, da wir Möglichkeiten sammeln, dies zu tun,
grep -n . file.txt | sed 's/\(^[0-9]*\):/\1 /g'
# this is a tab with Ctrl-V + Tab =====> ----
sed file.txt -e 's/^/\t/' | cat -n | sed -e 's/^\t//'
oder für einige Nicht-GNUs sed
:
cat file.txt | sed -e 's/^/\\t/' | cat -n | sed -e 's/^\\t//'