파이썬은 이것을위한 좋은 대안 도구가 될 수 있습니다 :
$ 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
이것이 작동하는 방식은 텍스트를 파이썬의 stdin으로 리디렉션하고 거기에서 줄을 읽는 것입니다. enumerate()
function은 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
그러나 bash에서 선호하는 경우 다음과 같이 수행 할 수 있습니다.
$ 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