나는 줄 번호를 계산하기 위해 sed를 사용하고 있습니다.
sed - n 'S=' file.txt
첫 번째 줄에 결과를 인쇄하고 싶습니다 file.txt
.
답변1
이렇게 하려면 파일을 두 번 통과해야 합니다. 한 번은 줄 수를 계산하고, 두 번째는 결과를 처음에 삽입합니다. sed
최고의 도구는 아닙니다. 노력하다:
cat <(wc -l < file.txt) file.txt
답변2
흠, "다중 고양이 스키닝" 세션인 것 같네요. 원시 행 수만 필요하다고 가정하면 어떻습니까?
sed 1i$(< file wc -l) file
또는
sed 1i$(sed -n "$=" file ) file
sed -i 1i....
변경 사항을 영구적으로 만들기 위해
답변3
사용암소 비슷한 일종의 영양 sed
,만약에행의 수는문서카운터 행을 추가하기 전에:
sed -i -n '1h;1!H;${=;x;p}' file
작동 방식:
-n
: 기본 인쇄를 끕니다.1h;1!H;
: 각 라인을h
이전 버퍼로 이동합니다. (간단한H
접근 방식은 거의 효과가 있지만 원하지 않는 빈 줄도 생성됩니다.)${=;x;p}
:sed
마지막 줄에 도달하면 줄 번호를 인쇄합니다=
. 그런 다음x
전체 홀드 버퍼를 패턴 버퍼로 변경하고 인쇄합니다.
답변4
awk
해결책:
마지막 줄 뒤에 추가하는 것은 쉽습니다.
awk '1; END{print NR}' file
tac
다음을 사용하여 이를 첫 번째 줄에 추가 할 수 있습니다 .
tac file | awk '1; END{print NR}' | tac
다른 솔루션과 비교하여 이 솔루션의 장점은 파일이 한 번만 열린다는 것입니다.
유일한 awk
대안은 좀 더 복잡합니다. 파일을 두 번 입력해야 합니다. 먼저 줄 수를 계산하고 두 번째로 NR을 처음부터 인쇄해야 합니다.
awk 'FNR!=NR{if(FNR==1)print NR-1;print;}' file file
또 다른 awk
유일한 대안(아마도 GNU에만 해당):
awk -ireadfile 'NR==1{print split(readfile(FILENAME), l, "\n")-1}1' file