다음과 같은 링크가 많이 있습니다.
https://content.example.net/skin/frontend/2015/default/fonts/test.ttf
https://content.example.net/skin/frontend/2015/default/img/test.svg
https://content.example.net/skin/frontend/2015/default/fonts/test.eot
https://content.example.net/skin/forntend/2015/default/js/test.js
URL에 CSS, jpg, svg, png, ttf 및 기타 텍스트가 포함된 파일에서 링크를 제거하는 방법
이제 다음과 같은 것을 사용하십시오
cat url.txt | sed '/png/d' | sed '/jpg/d' | sed '/svg/d' | ...etc
이 작업에는 많은 시간과 노력이 소요됩니다.
이것이 하룻밤 사이에 이루어질 수 있습니까?
답변1
정규식에 "OR" 구문을 사용할 수 있습니다.
sed -E '/png|jpg|svg/d' url.txt
두 패턴 중 하나를 포함하는 모든 줄이 삭제됩니다. 패턴이 파일 확장자인지 확인하고 싶다면, 즉 패턴이 나타나는지 확인해보세요줄 끝에서, 정규식에 앵커를 포함할 수 있습니다.
sed -E '/(png|jpg|svg)$/d' url.txt
cat
그런데 파일을 에 넣을 필요는 없습니다 sed
. 자체적으로 모든 것을 읽습니다.
답변2
Grep을 사용할 수도 있습니다.
grep -vE '\.(svg|jpg|png)' file
-v
일치하지 않는 줄만 인쇄하고 -E
확장 정규식을 활성화합니다.
\.(svg|jpg|png)
or와 일치하는 정규 표현식입니다 .svg
. jpg
또는 .png
.
이 파일을 수정하고 싶다면,
전역 명령과 함께 Ed를 사용하십시오.
printf '%s\n' 'g/\.\(svg\|jpg\|png\)/d' w q | ed -s file
g
전역 명령이며d
일치하는 줄을 삭제하고w
변경 사항을 저장하고q
종료합니다.Bash와 Vim을 사용하는 GNU/Linux 시스템에서는
vim -e file<<<'g/\v\.(svg|jpg|png)/d|x'
g
다시 전역 명령으로\v
이스케이프 대괄호의 필요성을 비활성화하고x
변경 사항을 저장합니다.
답변3
grep
더 알 맞는.
예를 들어 스키마 파일을 생성합니다.
printf '\\.%s$\n' svg jpg png > patterns.txt
다음을 사용하여 줄을 삭제합니다.
grep -vf patterns.txt url.txt
또는 직접적으로:
grep -ve "$(printf '\\.%s$\n' svg jpg png)" url.txt
산출:
https://content.example.net/skin/frontend/2015/default/fonts/test.ttf
https://content.example.net/skin/frontend/2015/default/fonts/test.eot
https://content.example.net/skin/forntend/2015/default/js/test.js
답변4
Raku 사용(옛 Perl 6)
OP의 원본 url.txt
파일을 가져와서 로 끝나는 더미 라인을 추가하면 *.txt
Raku를 사용한 답변은 다음과 같습니다.
~$ cat url.txt | raku -ne '.say unless .ends-with( "ttf" | "svg" | "eot" | "js" );'
산출:
https://content.example.net/skin/forntend/2015/default/js/test.txt
위의 코드는 줄의 끝을 보고 싶은 특정 경우에 작동합니다(Raku의 ends-with
루틴을 사용합니다). if
줄 끝이 있는지 여부를 선택하려면 ; 을 사용하여 unless
줄 끝이 있는지 여부를 선택합니다( unless
와 동일 if not
).
and 라는 파일이 있는 경우 이 ends-with
루틴에는 :ignorecase
인수도 필요합니다(간단히 다음과 같이 축약됨::i
jpg
JPG
~$ cat url.txt | raku -ne '.say unless .ends-with( "ttf" | "svg" | "eot" | "js", :ignorecase );'
산출:
https://content.example.net/skin/forntend/2015/default/js/test.txt
HTH.