Python เป็นเครื่องมือทางเลือกที่ดีสำหรับสิ่งนี้:
$ 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
วิธีการทำงานนี้คือการที่เราเปลี่ยนข้อความเป็น python stdin และอ่านบรรทัดจากที่นั่น 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