다음 코드가 있습니다.
cat file | grep example | sed 's/http/https/' >> report.txt
이 명령의 출력은 다음과 같습니다.
https://example.com/page/index.html
그러면 HTTPS를 사용하여 파일에 대한 링크가 추가됩니다. 그러나 두 번째 파일의 "URL"도 동일한 출력으로 대체하고 싶습니다.
두 번째 파일의 내용:
TEXT TEXT
TEXT
URL
TEXT TEXT
두 번째 파일의 필수 변경사항:
TEXT TEXT
TEXT
https://example.com/page/index.html
TEXT TEXT
가능합니까?
추신: 실제로는 단순한 고양이가 아니지만 이 명령으로 업로드 프로세스를 시작하기 때문에 명령을 다시 반복할 수 없습니다.
답변1
참고로 이 작업은 필요하지 않으며 혼자서도 수행 cat
할 수 있습니다 .grep
sed
sed '/URL/!d;s/http/&s/'
어쨌든 일련의 명령을 실행하여 단일 출력 라인을 생성한다고 가정하면 다음을 수행할 수 있습니다.
... | tee -a report.txt | sed 's|[\&/]|\\&|g;s|.*|s/URL/&/g|' | sed -f- -i infile.json
이렇게 하면 출력이 추가될 report.txt
뿐만 아니라 명령 sed
에 파이프되어 파일을 내부에서 편집 할 다른 명령으로 파이프됩니다.sed
sed
.json
답변2
다음은 짧은 질문에 대한 짧은 답변입니다.
cat file | grep URL | sed 's/http/https/' | tee -a report.txt | while read $LINE; do
sed --in-place -e "s·URL·$LINE·" thejsonfile.json
done
스크립트 의 세 문자를 모두 포함되지 않은 문자로 ·
바꾸 거나 (중간점) 으로 두십시오 .sed
$LINE
·
while read
편집: 방금 또 다른 질문에서 루프로의 파이프 연결이 성능 및 기타 이유로 나쁜 습관으로 간주된다는 것을 배웠습니다 . 이렇게 하면 작업을 수행할 수 있으므로 여기에 남겨두겠습니다.
답변3
sed -n '/example/s/http/&s/p' file | tee -a report.txt |\
sed -e 'G;s/$/./;G;s/$/wq/;h;s|.*|/URL/c|;G' | ed -s - json_file
첫 번째 출력을 기반으로 코드를 빌드 ed
하고 이를 사용하여 json 파일을 편집합니다.