
파일 이름이 포함된 텍스트 파일 Test.m3u가 있습니다.
FileName1.mp4
FileName2.mp4
FileName3.mp4
다음 형식으로 재생목록을 만들어야 합니다.
#EXTM3U
#EXTINF:FileName1
PATH/FileName1.mp4
#EXTINF:FileName2
PATH/FileName2.mp4
#EXTINF:FileName3
PATH/FileName3.mp4
명령:
sed -i -e 's/^/PATH:/' test.m3u
각 줄에 Path를 추가하지만 각 줄 위에 #EXTINF:FileNameX 줄을 어떻게 넣을 수 있습니까?
답변1
펄을 구출해주세요!
perl -i -ne '/(.*)\.mp4/;print "#EXTINF:$1\nPATH/$_"' -- file
다음을 포함할 수도 있습니다.
BEGIN { print "#EXTM3U\n\n" }
출력에서 헤더를 가져옵니다.
-i
파일을 "제자리"로 변경합니다.-n
입력을 한 줄씩 읽습니다.- 괄호는
()
첫 번째 캡처 그룹과 일치하는 캡처 그룹을 생성합니다 ( sed$1
와 유사 ).\1
\.
, sed와 마찬가지로 리터럴 점과 일치합니다.- 인쇄단지 인수를 출력합니다.
$_
아래는-n
현재 줄의 내용입니다
답변2
이 명령은 나에게 효과적이었습니다.
$ sed -e 's/\(.*\)\.\(.*\)/#EXTINF:\1\nPATH\/\1.\2/' test.m3u
#EXTINF:FileName1
PATH/FileName1.mp4
#EXTINF:FileName2
PATH/FileName2.mp4
#EXTINF:FileName3
PATH/FileName3.mp4
설명:
.*
- 이건 뭐든지 어울려
\(.*\)
- 이것은 무엇이든 일치하며 재사용할 수 있습니다(\1 및 \2의 다음 항목).
\.
- 이는 실제 점 문자와 일치합니다(이 경우 기본 이름과 확장자를 구분합니다).
\n
- 새 줄이 삽입됩니다.