테스트 파일:
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{...}
.