Python kann hierfür eine gute Alternative sein:
$ python -c "import sys;lines=[str(i)+' & '+l for i,l in enumerate(sys.stdin,1)]; print ''.join(lines)" < input.txt
1 & What & South Dragon & North Dragon & 5 \\ \hline
2 & What & South Dragon & North Dragon & 5 \\ \hline
3 & What & South Dragon & North Dragon & 5 \\ \hline
Dies funktioniert so, dass wir Text in Pythons Standard umleiten und von dort aus Zeilen lesen. enumerate()
Funktion gibt die Zeilenanzahl an, wobei sys.stdin
als Eingabe angegeben und 1
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:
#!/usr/bin/env python
import sys
for index,line in enumerate(sys.stdin,1):
print str(index) + ' & ' + line.strip()
Funktioniert trotzdem:
$ ./line_counter.py < input.txt
1 & What & South Dragon & North Dragon & 5 \\ \hline
2 & What & South Dragon & North Dragon & 5 \\ \hline
3 & What & South Dragon & North Dragon & 5 \\ \hline
Aber wenn Sie es lieber in Bash machen, dann können Sie das auch machen:
$ counter=1; while read line ; do printf "%s & %s\n" "$counter" "$line" ; counter=$(($counter+1)) ; done < input.txt
1 & What & South Dragon & North Dragon & 5 \ hline
2 & What & South Dragon & North Dragon & 5 \ hline
3 & What & South Dragon & North Dragon & 5 \ hline