"jq" 출력의 각 줄 시작 부분에 "wget"을 추가하는 방법은 무엇입니까?

"jq" 출력의 각 줄 시작 부분에 "wget"을 추가하는 방법은 무엇입니까?

다음 명령:

jq ".[] | .file.url_private_download" *json

다음 형식의 여러 줄을 생성합니다.

"https://files.slack.com/files-pri/T27SFGS2W-F78LH1DN2/download/img_1964.jpg?t=xoxe-243624297126-248125875671-248125975751-cee1f8d9a1"

각 줄 앞에 wget 명령을 추가하는 가장 쉬운 방법은 무엇입니까?

매우 감사합니다

답변1

다음은 몇 가지만 수정한 명령입니다.

jq -r '.[] | @sh "wget \(.file.url_private_download)"' *json

다양성:

  • -rJSON 인코딩 문자열 대신 디코딩된 문자열을 출력으로 가져오는 데 사용됩니다 .

  • 문서의 값을 문자열에 삽입 wget하는 데 사용되는 구조에서 원하는 값이 뒤에 오는 문자열을 생성합니다 .\(...)

  • @sh쉘 생성 문자열을 올바르게 인용 하는 데 사용됩니다 . 이렇게 하면 각 문자열의 보간된 값이 셸에서 사용하기 위해 안전하게 인용됩니다.

위 명령을 사용하면 표시된 URL이 포함된 항목이 다음 줄을 출력으로 생성할 것으로 예상됩니다.

wget 'https://files.slack.com/files-pri/T27SFGS2W-F78LH1DN2/download/img_1964.jpg?t=xoxe-243624297126-248125875671-248125975751-cee1f8d9a1'

답변2

xargs다음을 사용하여 각 줄 앞에 원하는 명령을 추가 할 수 있습니다 .

jq ".[] | .file.url_private_download" *json | xargs -n1 /bin/echo "wget"  

답변3

이를 사용하여 sed각 줄의 시작 부분을 다시 작성할 수 있습니다.

jq ".[] | .file.url_private_download" *json  | sed 's/^/wget /'

여기서는 줄의 시작 부분을 임의의 대체 패턴으로 "대체"합니다.wget

또는 wget모든 파일:

jq ".[] | .file.url_private_download" *json  | wget -i -

관련 정보