sed를 사용하여 파일의 115번째 줄에 이 문자열을 포함시키고 싶습니다. 그러나 항상 알 수 없는 명령에 대해 불평합니다. 다른 질문에서 다른 해결 방법을 따랐지만 아직 해결하지 못했습니다.
sed '115"<"img src="\.\/index_files\/Logo\.png" width="200" height="160" align="right" border="0">"' index.html > test.html
감사해요!
답변1
명령이 "
아니기 때문이다 . sed
오류 메시지에서 알 수 있듯이 명확하지는 않습니다.
주소 115
다음에는 명령이 와야 합니다 sed
.i
- 그런 다음 일부를 제거하십시오
"
. 그 주위<
와 그 이후>
- 그런 다음 s를 탈출하지 마십시오
/
. 탈출할 필요가 없습니다. i
그런 다음 명령은 텍스트만 허용하므로 아무것도 이스케이프하지 마십시오 .
이로 인해 우리는 다음과 같은 결과를 얻게 됩니다.sed '115 i <img src="./index_files/Logo.png" width="200" height="160" align="right" border="0">'
답변2
사용자 richard는 명령의 문제점을 잘 설명하고 sed
수행하려는 작업을 수행하는 데 필요한 올바른 편집 스크립트도 제공합니다.
저는 다양한 상황에서 작동하는 대안을 제공했습니다.
이 sed
명령은 r
데이터 스트림의 현재 위치에 파일 내용을 삽입합니다.
당신의 sed
명령줄할 수 있다이렇게 적혀있다
$ sed '115r /dev/stdin' index.html <data.in
sed '115r data.in' index.html
이는 115행 뒤에 삽입된 데이터를 파일에 저장하려는 경우 data.in
와 동일한 효과를 갖습니다 .
/dev/stdin
표준 입력을 통해 전송된 모든 내용을 포함하는 특수 파일입니다.
다음과 같이 할 수도 있습니다("here-strings"를 지원하는 셸 사용).
$ sed '115r /dev/stdin' index.html <<<"my string of stuff"
또는
$ sed '115r /dev/stdin' index.html <<<"$myvariableofwonder"
분명히 이것은 다른 명령의 파이프에서도 예상대로 작동합니다.
$ sed -n '1,10p' myfile | sed '115r /dev/stdin' index.html
이렇게 하면 1~10행이 115행 myfile
으로 이동됩니다 index.html
.