파일에 문자열을 추가하고 이를 다른 파일의 패턴 대신 사용하려면 tee를 사용하세요.

파일에 문자열을 추가하고 이를 다른 파일의 패턴 대신 사용하려면 tee를 사용하세요.

다음 코드가 있습니다.

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할 수 있습니다 .grepsed

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에 파이프되어 파일을 내부에서 편집 할 다른 명령으로 파이프됩니다.sedsed.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 파일을 편집합니다.

관련 정보