Sed를 사용하여 키워드 카운터 추가

Sed를 사용하여 키워드 카운터 추가

이런 파일이 있다고 가정해 보겠습니다.

Keyword "name"
aaa bbb
ccc ddd

Keyword "another name"
eee fff
ggg
hhh iii

등.

카운터가 주어진 숫자에서 시작되도록 파일의 키워드 줄을 변경하고 싶습니다. 예를 들어, 5부터 시작하는 키워드 행의 번호를 지정하려는 경우 키워드 행은 다음과 같습니다.

Keyword "5 - name"
Keyword "6 - another name"

등. 파일의 다른 모든 줄은 변경되지 않습니다.

이를 수행할 수 있는 방법이 있습니까? 감사합니다.

답변1

GNU sed가 있는 경우 비표준 R명령을 사용하여 미리 생성된 시퀀스에서 인덱스를 읽고 삽입하고 sed를 다시 호출하여 결과를 재정렬할 수 있습니다.

printf '%d\n' {5..100} | sed '/^Keyword/R /dev/stdin' file | 
    sed '/^Keyword/{N; s/Keyword "\([^"]*\)"\n\(.*\)/Keyword "\2 - \1"/}'

하지만 이 작업에는 대신 perlor 를 사용하는 것이 좋습니다 .awk

awk -v k=5 '/^Keyword/ {sub(/^Keyword \"/, sprintf("Keyword \"%d - ", k++))} 1' file

답변2

의존하지 않으면 다음과 같이 sed쉽게 할 수 있습니다 perl.

$ perl -pe 'BEGIN{$k=4};s/Keyword "/$& . ++$k . " - "/e' file 
Keyword "5 - name"
aaa bbb
ccc ddd

Keyword "6 - another name"
eee fff
ggg
hhh iii

관련 정보