파일의 특정 줄에 출력을 추가하는 방법

파일의 특정 줄에 출력을 추가하는 방법

파일의 특정 줄에 쉘 스크립트 출력을 추가하고 싶습니다.

비슷한 작업을 수행할 수 있지만 파일 끝 대신 파일의 세 번째 줄에 출력을 추가할 수 있습니까?

sh ./myScript.sh >> myFile.txt

답변1

이 솔루션은 처음 3줄을 에 저장하고 /tmp/first, 파일의 나머지 부분을 에 저장하고 /tmp/last, 출력을 에 저장한 myScript.sh다음 , 모두 다시 /tmp/middle모아서 cat원본을 덮어쓰는 방식으로 작동합니다 /tmp/file.

file=/tmp/file
sed -n '1p;2p;3p' "${file}" >/tmp/first
sed '1d;2d;3d' "${file}" >/tmp/last
./myScript.sh >/tmp/middle
cat /tmp/first /tmp/middle /tmp/last >/tmp/file

답변2

GNU sed에 액세스할 수 있는 경우 다음과 같이 입력 파일의 세 번째 줄에 대상을 추가할 수 있습니다.

sh ./myScript.sh | sed -i -e '3r /dev/stdin' myFile.txt

답변3

의 출력이 myScript.sh하나 이상의 라인이고 이를 원본 파일의 라인 3과 4 사이에 새 라인으로 삽입하려는 경우:

$ sh ./myScript.sh | perl -i -pe 'print <STDIN> if $.==4' myFile.txt

위에서 출력이 개행 문자로 끝나지 않으면 <STDIN>로 변경합니다.<STDIN>,"\n"myScript.sh

출력이 myScript.sh한 줄이고 새 줄을 삽입하지 않고 세 번째 줄 끝에 추가하려는 경우:

$ sh ./myScript.sh | perl -i -ple 'chomp($_.=<STDIN>) if $.==3' myFile.txt

관련 정보