컬을 사용하여 다운로드한 파일에서 특정 문자열을 가져와서 다운로드한 파일 내용을 다른 쉘 프로그램으로 리디렉션하고 싶습니다. 코드는 다음과 같습니다.
curl "http://file-list-url" -s | awk 'BEGIN {c=0} $0 ~ "FILE:" {urlpos=index($0,"URI=")+5; fileurl=substr($0, urlpos, 150-urlpos-2); print fileurl ; curl -s -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36" fileurl | hexdump -C | head -1 ; print filecontent }'
각각을 얻은 후에는 fileurl
컬을 사용하여 다운로드하고 내용을 가져온 다음 전달 hexdump
하고 head
최종 출력을 인쇄하고 싶습니다 head
.
답변1
curl
내부적으로 등을 실행하려고 시도하지 말고 awk
이를 파이프라인의 처리 단계로 사용한 awk
다음 파이프라인의 나머지 부분을 실행하십시오.
useragent='User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36
curl -s "http://file-list-url" |
awk '/FILE:/ { urlpos=index($0,"URI=")+5; print substr($0, urlpos, 150-urlpos-2) }' |
xargs -I {} curl -s -H "$useragent" {} |
hexdump -C | head -n 1
또는 쌍에 대한 모든 도우미 호출을 원 hexdump
하고 이에 대해 조치를 취하려면 다음을 수행하십시오 .head
curl
curl -s "http://file-list-url" |
awk '/FILE:/ { urlpos=index($0,"URI=")+5; print substr($0, urlpos, 150-urlpos-2) }' |
xargs -I {} sh -c '
curl -s -H "$useragent" "$1" |
hexdump -C | head -n 1' sh {}
여기서는 xargs
명령줄 인수만 사용하여 실행하고 curl
결과 출력을 및 를 통해 전달하는 작은 쉘 스크립트를 실행하는 데 을 사용하고 있습니다. hexdump
head