Python dapat menjadi alat alternatif yang baik untuk ini:
$ 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
Cara kerjanya adalah kita mengarahkan teks ke stdin python, dan membaca baris dari sana. enumerate()fungsi adalah apa yang memberi jumlah baris, dengan sys.stdinditentukan sebagai input dan 1merupakan indeks awal. Sisanya sederhana - kita membuat daftar string baru dengan casting index ketika string digabungkan bersama dengan ' & 'string, dan garis itu sendiri. Akhirnya, semua itu disusun kembali dari daftar menjadi satu tes oleh ''.join()fungsi.
Atau, inilah versi multi-line untuk file skrip atau hanya untuk dibaca:
#!/usr/bin/env python
import sys
for index,line in enumerate(sys.stdin,1):
print str(index) + ' & ' + line.strip()
Bekerja sama saja:
$ ./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
Tetapi jika Anda lebih suka melakukannya di bash, maka itu bisa dilakukan juga:
$ 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