Ich habe zuerst über SED ( sed "s/^/COUNTER \&/" /tmp/1.tex
) nachgedacht, aber es ist für eine einzelne Zeile konzipiert, und ich kann den Zähler selbst nicht erhöhen, indem awk
ich jetzt so nachdenke, weil ich großartige Erfahrungen mit gawk
integrierten Ansätzen habe. Daten
What & South Dragon & North Dragon & 5 \\ \hline
What & South Dragon & North Dragon & 5 \\ \hline
What & South Dragon & North Dragon & 5 \\ \hline
Erwartete Ausgabe
1 & What & South Dragon & North Dragon & 5 \\ \hline
2 & What & South Dragon & North Dragon & 5 \\ \hline
3 & What & South Dragon & North Dragon & 5 \\ \hline
Betriebssystem: Debian 8.5
text-processing
awk
nl
Léo Léopold Hertz 준영
quelle
quelle
nl -s ' &' /path/to/file
.-s
Gibt an, was die Zahlen vom Hauptteil der Eingabedatei trennt.nl
unterscheidet sich voncat -n
und dieawk
Lösung darin, dass es standardmäßig keine leeren ZeilenDies erreicht das, wonach Sie suchen. (wie auch
awk '$0=NR" & "$0' filename
, aber das ist ein bisschen kryptisch)Oder wenn
sed
vorzuziehen, ergibt dies das gleiche Ergebnis.perl
Ansätze.quelle
sed = filename | ...
? - - Ich wusste nicht, dass Sie sed mitequal
Symbol verwenden können. - - Kann Ihresed
Aussage in dynamischen Umgebungen funktionieren? Irgendwelche Schwächen?=
Operator befindet sich im Abschnitt "Null- oder Einadressenbefehle".= Print the current line number
. Die Funktion ist also tatsächlich in sed integriert. Nett!Python kann hierfür eine gute Alternative sein:
Dies funktioniert so, dass wir Text in Pythons Standard umleiten und von dort aus Zeilen lesen.
enumerate()
Funktion gibt die Zeilenanzahl an, wobeisys.stdin
als Eingabe angegeben und1
der Startindex ist. Der Rest ist einfach: Wir erstellen eine Liste neuer Zeichenfolgen, indem wir den Index als Zeichenfolge zusammenfügen, die mit der' & '
Zeichenfolge und der Zeile selbst verbunden ist. Schließlich wird alles, was von der''.join()
Funktion aus der Liste zu einem Test zusammengesetzt wird .Alternativ ist hier eine mehrzeilige Version für eine Skriptdatei oder einfach zur besseren Lesbarkeit:
Funktioniert trotzdem:
Aber wenn Sie es lieber in Bash machen, dann können Sie das auch machen:
quelle
enumerate()
spart wie 3 Codezeilen. Dies ist nützlich, wenn Sie sich mit anderen Dingen befassen, z. B. der Verarbeitung von Elementen in Listen. Siehe docs.python.org/2/library/functions.html#enumeratebash
Beispiel verstehen, können Sie diese gerne verwenden :) Ich habe aus Erfahrung festgestelltenumerate()
, dass sie eleganter ist, aber das ist nur meine Meinung. Verwenden Sie auf jeden Fall eine andere Methode, wenn Sie der Meinung sind, dass dies klarer istenumerate
ist klarer als die variable Instanziierung. Kann der Lambda-Ausdruck Platz sparen?Dies ist auch eine Option
cat -n
mit automatischer Nummerierung:quelle