पायथन इसके लिए एक अच्छा वैकल्पिक उपकरण हो सकता है:
$ 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
जिस तरह से यह काम करता है वह यह है कि हम पाठ को अजगर के स्टड में पुनर्निर्देशित करते हैं, और वहां से लाइनें पढ़ते हैं। enumerate()
फ़ंक्शन वह है जो sys.stdin
इनपुट के रूप में निर्दिष्ट के साथ लाइन काउंट देता है, और 1
शुरुआती सूचकांक है। बाकी सरल है - हम कास्टिंग द्वारा इंडेक्स द्वारा नए तारों की सूची बनाते हैं क्योंकि स्ट्रिंग स्ट्रिंग के साथ ' & '
जुड़ती है, और स्वयं लाइन। अंत में, वह सब जो ''.join()
फ़ंक्शन द्वारा सूची से पुन: परीक्षण में लिया गया है।
वैकल्पिक रूप से, यहाँ एक स्क्रिप्ट फ़ाइल के लिए या पठनीयता के लिए एक बहु-लाइन संस्करण है:
#!/usr/bin/env python
import sys
for index,line in enumerate(sys.stdin,1):
print str(index) + ' & ' + line.strip()
सिर्फ एक ही काम करता है:
$ ./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
लेकिन अगर आप इसे बाश में करना पसंद करते हैं, तो यह किया जा सकता है:
$ 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