file.txt가 다음과 같다고 가정하면:
line_ some text
line_ some text
line_ some text
Bash를 사용하여 이와 같은 줄 번호를 매기는 방법:
line_1 some text
line_2 some text
line_3 some text
이것은 지금까지 내 생각이지만 작동하지 않습니다.
#!/bin/bash
var = 1
cat ./file.txt
while read line; do
sed "s/line_/line_(( var++ ))/"
done < ./file.txt
답변1
awk를 사용할 수 있습니다.
awk '$1=$1 FNR' <file>
$1
각 레코드의 첫 번째 단어입니다(이 경우 행). FNR
입력 레코드 번호(이 경우 줄 번호)입니다.
이 명령은 각 줄을 각 first word
줄로 바꿉니다 first word + line-number
.
답변2
Perl에서 이를 수행하는 방법은 다음과 같습니다.
perl -pe 'print "line_$. $_";' [file(s)]
파일로 보내려는 경우:
perl -pe 'print "line_$. $_";' [input_file] > [output_file]
답변3
내가 보기엔 당신이 이곳에서 꽤 잘 보호받고 있는 것 같은데, 정확히 어떤가요?
sed -et -e's/_ /\n/;P;=;D' <in | paste -'d_ ' - - - >out
sed
정확히 수학 분야의 천재는 아니지만 가끔 친구들이 속임수를 써서 그럭저럭 넘어가곤 합니다.
이렇게 변경됩니다...
line_ some text
line_ some text
line_ some text
...도착하다...
line_1 some text
line_2 some text
line_3 some text
답변4
글쎄, 당신은 Shell/Bash를 처음 접하는 것 같으므로 교육적인 이유로 여기에 당신이 선택한 기술을 다루는 솔루션이 있습니다(http://mywiki.wooledge.org/BashFAQ/001,http://mywiki.wooledge.org/BashGuide/Parameters#Parameter_Expansion)
var=1
while read -r Line; do
printf "%s\n" "${Line/line_/line_$var}" >> ./file-new.txt
let var++
done < ./file.txt