여러 개의 URL이 포함된 파일이 있습니다. 하지만 불행하게도 모든 URL은 한 줄에 있습니다.
고양이 URL_파일
http://transfer.sh/PIGfk/my-file.002554http://transfer.sh/Ep9Md/my-file.002555http://transfer.sh/Ep9Md/my-file.002556http://transfer.sh/Ep9Md/my-file.002557
예상 출력:
http://transfer.sh/PIGfk/my-file.002554
http://transfer.sh/Ep9Md/my-file.002555
http://transfer.sh/Ep9Md/my-file.002556
http://transfer.sh/Ep9Md/my-file.002557
답변1
GNU grep
grep -oP 'http://.+?(?=http://|$)' url_file
답변2
사용 perl
:
perl -pe 's#(?<=.)(?=http://)#\n#g' url_file
설명하다
이것은긍정적 인 전망로 시작하는 하위 문자열을 찾아 http://
그 앞에 개행 문자( )를 넣습니다 \n
.
그것은 또한활성 후면보기문자가 앞에 오는 경우에만 일치합니다 http://
. 이렇게 하면 줄의 첫 번째 URL 앞에 개행 문자가 삽입되지 않습니다. 여러 행으로 끝나는 경우 매우 편리합니다.
고쳐 쓰다
@steeldriver의 훌륭한 의견 이전에는 Lookbehind를 사용하지 않고 sed '1d'
첫 번째 줄을 제거하는 데 의존했습니다.
답변3
다음 GNU 명령을 사용할 수 있습니다 sed
.
sed 's,http://,\n&,g' url_file | tail -n +2
패턴을 찾아 패턴 http://
앞에 CR을 삽입합니다.
tail -n +2
이 sed 명령으로 삽입된 첫 번째(빈) 줄을 건너뜁니다.
답변4
저는 아래 3가지 방법으로 했어요
python
#!/usr/bin/python
import re
k=open('filename','r')
for i in k:
print re.sub("http","\nhttp",i)
perl
perl -pne "s/http/\nhttp/g" filename
sed command
sed "s/http/\n&/g" filename
산출
http://transfer.sh/PIGfk/my-file.002554
http://transfer.sh/Ep9Md/my-file.002555
http://transfer.sh/Ep9Md/my-file.002556
http://transfer.sh/Ep9Md/my-file.002557