sed를 사용하여 문제 분석

sed를 사용하여 문제 분석

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%",

이제 이전 방법을 사용할 수 있습니다.

관련 정보