전체 파일의 패턴과 일치하는 다음 줄의 시작 부분에 문자를 추가합니다.

전체 파일의 패턴과 일치하는 다음 줄의 시작 부분에 문자를 추가합니다.

테스트 파일:

cat Test.txt
#EXTM3U

#EXTINF:100
a.flac

#EXTINF:20
b.flac

예상되는 결과

cat Test.txt
#EXTM3U

#EXTINF:100
#a.flac

#EXTINF:20
#b.flac

실험 1

sed -e '/^#EXTINF/a #'  Test.txt
#EXTM3U

#EXTINF:100
#
a.flac

#EXTINF:20
#
b.flac

제안?

#내 실험에서는 추가하고 싶지 않은 새 행을 추가한 후 추가했습니다 .

답변1

$ sed -e '/^#EXTINF/{n;s/^/#/;}' Test.txt
#EXTM3U

#EXTINF:100
#a.flac

#EXTINF:20
#b.flac

어디

  • n패턴 공간(이 경우 일치하는 라인 ^#EXTINF)을 인쇄한 다음 읽습니다.N패턴 공간에 대한 입력의 외부 라인
  • s/^/#/ 에스#새로 읽은 줄의 시작 부분에서 교체

답변2

그리고 awk:

awk '{print} /^#EXTINF/ && (getline > 0) {print "#" $0}' file

원하는 라인을 인쇄하고 패턴을 테스트하세요. 패턴이 일치하면 getline처리할 다음 행을 가져오기 위해 호출이 이루어집니다. 또한 && getline일치하는 경우 마지막 줄을 다시 인쇄하지 않도록 다음 줄이 존재하고 아직 파일 끝에 도달하지 않았는지 테스트하는 데 사용됩니다.


또한 아니요 getline:

awk 'p{$0 = "#" $0; p=0} /^#EXTINF/{p=1} {print}' file

패턴이 발견되면 플래그( p)를 사용하여 설정하십시오. 내부 에서는 p=0플래그가 설정된 다음 줄에서만 플래그를 사용할 수 있습니다 p{...}.

관련 정보