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.stdin
ditentukan sebagai input dan 1
merupakan 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