Bash는 Xargs를 사용하여 여러 쿼리를 실행합니다.

Bash는 Xargs를 사용하여 여러 쿼리를 실행합니다.

나는 다음과 같은 것을 원한다이와 관련하여:

cat infile | xargs -I {} -P3 curl {} -o /dev/null --silent --head --write-out "%{http_code} {}\n" > outfile

하지만 이 스크립트를 사용하면(예: 여러 쿼리를 실행하기 위해 xargs 포함):

for ip in `cat infile`; do
    for sub in "" "www." "ftp."; do
            host -t a "${sub}${ip}";
    done
done | grep address | awk '{ print $4 }' > out

입력 파일:

google.com
facebook.com

결과물 파일:

172.217.172.14
172.217.30.196
157.240.6.35
31.13.67.35

답변1

xargs를 사용하면 bash를 호출하여 원하는 작업을 수행할 수 있습니다.

cat infile \
     | xargs -I {} -P3  bash -c 'for sub in "" "www." "ftp."; do host -t a "${sub}{}" ; done '

이 명령 위에 원하는 것을 추가할 수 있습니다.

cat infile \
     | xargs -I {} -P3  bash -c 'for sub in "" "www." "ftp."; do host -t a "${sub}{}" ; done '  \
     | MY_POWER_FULL_SED_OR_GREP 

또는 bash 명령에 grep을 추가하려는 경우

cat infile \
     | xargs -I {} -P3  bash -c 'for sub in "" "www." "ftp."; do host -t a "${sub}{}" ; done | MY_POWER_FULL_SED_OR_GREP '

관련 정보