처음에는 SED( )를 생각했지만 sed "s/^/COUNTER \&/" /tmp/1.tex
단일 라인용으로 설계되었고 sed를 통해 카운터 자체를 증가시킬 수 없었기 때문에 awk
통합 방법에 대한 광범위한 경험이 있으므로 지금 생각하고 있습니다. gawk
데이터
What & South Dragon & North Dragon & 5 \\ \hline
What & South Dragon & North Dragon & 5 \\ \hline
What & South Dragon & North Dragon & 5 \\ \hline
예상 출력
1 & What & South Dragon & North Dragon & 5 \\ \hline
2 & What & South Dragon & North Dragon & 5 \\ \hline
3 & What & South Dragon & North Dragon & 5 \\ \hline
운영 체제: 데비안 8.5
답변1
nl
파일 줄 번호를 매기는 유틸리티입니다. 용법:
nl /path/to/file
귀하의 구체적인 경우:
$ nl -s ' & ' 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
답변2
이것은 당신이 추구하는 것을 달성합니다. (같은 내용인데 awk '$0=NR" & "$0' filename
좀 미스테리하네요)
awk '{print NR,"&",$0}' filename
1 & What & South Dragon & North Dragon & 5 \\ \hline
2 & What & South Dragon & North Dragon & 5 \\ \hline
3 & What & South Dragon & North Dragon & 5 \\ \hline
또는 sed
원하는 경우 동일한 결과가 생성됩니다.
sed = filename | sed 'N;s/\n/ \& /'
perl
가까운.
perl -pe '$_="$. & $_"' filename
perl -pe 's/^/$. & /' filename
답변3
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의 표준 입력으로 리디렉션하고 거기에서 줄을 읽는 방식으로 작동합니다. 이 함수는 입력으로 지정된 enumerate()
행 수를 제공하며 시작 인덱스입니다. 나머지는 간단합니다. 인덱스를 행 자체와 연결된 문자열로 변환하여 새로운 문자열 목록을 구성합니다. 마지막으로 이 함수는 목록의 모든 항목을 test 로 재조립합니다 .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
답변4
cat -n
이는 자동 번호 매기기와 함께 사용하기 위한 옵션이기도 합니다.
while read num line;do echo $num "&" $line;done <<<$(cat -n a.txt)