![sed 명령을 사용하여 한 파일에서 다른 파일로 텍스트를 삽입하는 올바른 방법을 알고 싶으십니까? [복사]](https://linux55.com/image/128827/sed%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%95%9C%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%EB%8B%A4%EB%A5%B8%20%ED%8C%8C%EC%9D%BC%EB%A1%9C%20%ED%85%8D%EC%8A%A4%ED%8A%B8%EB%A5%BC%20%EC%82%BD%EC%9E%85%ED%95%98%EB%8A%94%20%EC%98%AC%EB%B0%94%EB%A5%B8%20%EB%B0%A9%EB%B2%95%EC%9D%84%20%EC%95%8C%EA%B3%A0%20%EC%8B%B6%EC%9C%BC%EC%8B%AD%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
이 사이트를 표시하는 동안 몇 가지 문제로 인해. 저는 "<" 대신 "{"를 사용합니다.
이것은 내 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
이것은 테스트되지 않았고 무섭기 때문에 적절한 프로그래밍 언어를 사용하는 것이 좋습니다.