sed 명령을 사용하여 한 파일에서 다른 파일로 텍스트를 삽입하는 올바른 방법을 알고 싶으십니까? [복사]

sed 명령을 사용하여 한 파일에서 다른 파일로 텍스트를 삽입하는 올바른 방법을 알고 싶으십니까? [복사]

이 사이트를 표시하는 동안 몇 가지 문제로 인해. 저는 "<" 대신 "{"를 사용합니다.

이것은 내 sed 명령입니다.

sed 's/{head/*backbutton_and_scroller_script.txt*{head/' report.usc20.txt

"report.usc20.txt" 파일의 head 태그 앞에 "backbutton_and_scroller_script.txt" 내부의 텍스트 정보를 삽입하고 싶습니다. sed 명령에서 backbutton_and_scroller_script.txt 파일을 올바르게 가리키는 방법은 무엇입니까? 내 현재 코드는 파일 이름을 표시합니다뒤로버튼_and_scroller_script.txtbackbutton_and_scroller_script.txt의 텍스트가 아닌 report.usc20.txt의 head 태그 앞.

답변1

sed첫째, 이것이 어떻게 작동하는지에 대해 약간의 오해가 있는 것 같습니다 . sed"스키마의 이 부분으로 파일 리디렉션" 연산자는 없습니다. 리디렉션할 수 있는 경우 패턴이 엉망이 되지 않도록 입력 텍스트에서 특수 문자를 이스케이프 처리해야 합니다(여기에는 점 및 슬래시와 같은 문자가 포함되므로 일반적인 문자가 아닙니다). 그리고조정-i옵션 파일을 사용해야 합니다 sed.

이는 귀하가 듣고 싶은 내용이 아닐 수도 있지만 sed해당 작업에는 잘못된 도구입니다. 당신이 할 수 있는 가장 좋은 일은 도구나 라이브러리를 얻는 것입니다.분명한이러한 유형의 마크업(예: XSLT 또는 Python/Java/Ruby 라이브러리)

완전히 사용자 정의된 언어를 사용하는 경우 끔찍한 해킹을 사용하여 처음 나타날 때까지 파일을 읽을 수 있습니다 {head.

file="$(<report.usc20.txt)"
start="${file%%\{head*}"

, 파일의 해당 나머지 부분을 얻으려면 다음을 수행하십시오.

end="${file#*\{head}"

마지막으로 모든 조각을 하나로 모으십시오.

printf '%s%s{head%s' "$start" "$(<backbutton_and_scroller_script.txt)" "$end" > report.usc20.txt

이것은 테스트되지 않았고 무섭기 때문에 적절한 프로그래밍 언어를 사용하는 것이 좋습니다.

관련 정보