정규식이 일치하면 nl은 숫자 접미사를 추가합니까?

정규식이 일치하면 nl은 숫자 접미사를 추가합니까?

다음과 같은 텍스트 파일이 있는 경우:

Xgrep () { something ; }  

Xgrep
Xgrep
Xgrep
Xgrep
Xgrep

나는 이것이 이렇게 보이기를 원한다.

Xgrep () { something ; }  

Xgrep 12
Xgrep 13
Xgrep 14
Xgrep 15
Xgrep 16

-s " "즉, 접두사 대신 접미사를 사용하고 사이에 공백이 있는( 사이에 공백이 있는) 시작할 숫자를 선택하고 싶다는 의미입니다 . 나는 nl이것을 사용할 수 있다고 생각했지만 맨페이지를 읽어보니 그렇지 않은 것 같습니다. 나는 이것을 시도했습니다 :

nl -b pexpr=Xgrep -s " " ~/desktop/test.txt

그러나 이것은 단지 이것입니다:

    Xgrep
    Xgrep
    Xgrep
    Xgrep
    Xgrep

정규식 구문이 잘못되었기 때문일 수 있지만 일치하는 방법을 찾을 수 없으며 다른 모든 사용 방법이 나열되어 있습니다.

이 웹사이트내가 하고 싶은 일과 거의 똑같지만, 명령줄 형식으로 숫자 접미사만 사용합니다.

답변1

% perl -ple 'BEGIN{$i=12} s/^(Xgrep)\s*$/"$1 ".$i++/e' < in
Xgrep () blah

Xgrep 12
Xgrep 13
Xgrep 14
Xgrep 15
Xgrep 16
Xgrep 17
% 

라인을 인쇄하고, 카운터를 시작하고, Xgrep을 일치시키고 끝에 증분 숫자를 추가합니다. 필요한 경우 < in파일 이름으로 바꾸고 -i손상된 파일에 플래그를 추가합니다. 솔루션은 awk매우 유사해 보일 수 있습니다.

관련 정보