파일 사이에 줄을 삽입하는 쉘 스크립트

파일 사이에 줄을 삽입하는 쉘 스크립트

내용이 쓰여진 file1.txt가 있다고 가정하자.

Ramesh
Suresh
Raman

아래 쉘 스크립트에서 file1 .txt의 컨텐츠 이름을 읽고 준비합니다.이름=$행에코 문에서. (sh의 3번째 줄에 작성된 쉘 스크립트에서는 표시할 수 없습니다.

while read -r line
do
   echo "<Name="$line"/>"
done <"file.txt"

또 다른 XML file2.xml이 있습니다.

<project>
<target>
start
end
</target>
</project>

file2.xml에 행을 삽입하는 쉘 스크립트를 향상시키고 싶습니다. file2.xml에서 패턴을 찾으면를 누른 다음 위 내용을 삽입하세요., 각각 개행 문자가 있습니다. 누구든지 쉘 스크립트를 수정하는 데 도움을 줄 수 있습니까?

출력은 다음과 같아야 합니다.

<project>
<target>
start
Name=Ramesh
Name=Suresh
Name=Raman
end
</target>
</project>

답변1

나는 이렇게 할 것이다:

names=$(sed s/^/Name=/ file1.txt)

ed file2.txt <<END
/^end$/i
$names
.
wq
END

지금:

$ cat file2.txt
<project>
<target>
start
Name=Ramesh
Name=Suresh
Name=Raman
end
</target>
</project>

답변2

awk를 사용할 수 있습니다.

awk 'NR==FNR{Lines=Lines "Name=" $0 "\n";next}/end/{print Lines $0 ;next}1' file{1,2}

<project>
<target>
start
Name=Ramesh
Name=Suresh
Name=Raman
end
</target>
</project>

관련 정보