다음 명령:
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
다양성:
-r
JSON 인코딩 문자열 대신 디코딩된 문자열을 출력으로 가져오는 데 사용됩니다 .문서의 값을 문자열에 삽입
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 -