0test.txt
다음 코드 조각이 포함된 텍스트 파일이 있습니다 .(여러 개의 http 및 https URL 링크가 있지만 이 줄에는 개별적으로 나열되어 있습니다.)
player.setup({
file: 'http://website.com/site/myStream/playlist.m3u8?wmsAuthSign=c2VydmVyXs',
width: "100%",
aspectratio: "16:9",
});
sed
다음 명령을 실행할 수 있습니다 .
cat /tmp/0test.txt | sed -n -e "/^ *file: */ { s/^ *file: *'//; s/', *$//p}"
그리고 올바른 URL 링크를 반환합니다.
http://website.com/site/myStream/playlist.m3u8?wmsAuthSign=c2VydmVyXs
그러나 파일이 0test.txt
다음과 같은 경우:
player.setup({
file:
'http://website.com/site/myStream/playlist.m3u8?wmsAuthSign=c2VydmVyX3RpbWU9MTIvNC8yMDE5IDk6MTY6NTggUE0maGFzaF92YWx1ZT16RXpiUWowQ0V4TDJER3ExQnFZTEd3PT0mdmFsaWRtaW51dGVzPTM2MCZzdHJtX2xlbj0w',
width: "100%",
aspectratio: "16:9",
aspectratio: "16:9"
});
나는 대가로 아무것도 얻지 못합니다. 이 문제를 어떻게 해결할 수 있나요?
답변1
이 특정 사례에 grep
더 유용할 수 있습니다 . 첫 번째 단계로 line:
전문 용어를 검색하고 출력에 다음 줄을 추가합니다. 그런 다음 URL 자체를 사용하여 를 선택 grep
하고 마지막으로 sed
뒤따르는 작은따옴표와 쉼표를 제거합니다.
grep -A 1 'file:' <infile(s)> | grep -oE 'http.*' | sed "s:',$::"
답변2
정규 표현식에서는 콜론("file: *") 뒤에 공백 문자를 얼마든지 사용할 수 있습니다. 줄 바꿈과 탭이 "공백처럼" 처리되도록 이를 범용 공백 문자("\s")로 확장할 수 있습니다.
답변3
빠른 수정.
cat /tmp/0test.txt|sed ':a;N;$!ba;s/file:\s*\n/file: /g;'
이 줄은 다음과 같은 방법으로 파일을 변환합니다. "file:"(끝에 추가 공백이 있거나 없음)으로 끝나는 각 줄은 그 뒤의 줄과 병합됩니다.
이런 식으로 텍스트는
player.setup({
file:
'http://website.com/site/myStream/playlist.m3u8?wmsAuthSign=c2VydmVyX3RpbWU9MTIvNC8yMDE5IDk6MTY6NTggUE0maGFzaF92YWx1ZT16RXpiUWowQ0V4TDJER3ExQnFZTEd3PT0mdmFsaWRtaW51dGVzPTM2MCZzdHJtX2xlbj0w',
width: "100%",
로 변환됩니다
player.setup({
file: 'http://website.com/site/myStream/playlist.m3u8?wmsAuthSign=c2VydmVyX3RpbWU9MTIvNC8yMDE5IDk6MTY6NTggUE0maGFzaF92YWx1ZT16RXpiUWowQ0V4TDJER3ExQnFZTEd3PT0mdmFsaWRtaW51dGVzPTM2MCZzdHJtX2xlbj0w',
width: "100%",
이제 이전 방법을 사용할 수 있습니다.