sed
파일의 특정 줄에 텍스트를 추가하는 명령을 찾고 있었습니다 . 그러면 1행 뒤에 텍스트가 추가됩니다.
sed '1 a\
하지만 난 그걸 추가하고 싶어앞으로1호선. 그것은 다음과 같습니다:
sed '0 a\
하지만 다음과 같은 오류가 발생합니다 invalid usage of line address 0
.
어떤 제안이 있으십니까?
답변1
sed
insert( ) 옵션을 사용하면 i
이전 줄에 텍스트를 삽입합니다.
sed '1 i\
질문 작성자의 업데이트:
GNU를 사용하여 파일을 제자리에서 편집하려면 다음 옵션을 sed
추가해야 했습니다 .-i
sed -i '1 i\anything' file
그리고 문법
sed -i '1i text' filename
GNU가 아닌 sed의 경우
백슬래시 바로 뒤에 1i\
Enter 키를 눌러야 합니다 first_line_text
.
sed -i '1i\
first_line_text
'
또한 일부 비 GNU sed
구현(예: macOS의 구현) 에 유의하세요.필요하다플래그에 대한 인수 -i
( -i ''
GNU와 동일한 효과를 얻기 위해 사용됨 sed
).
sed
전혀 지원되지 않는 구현 의 경우 -i
이 옵션 없이 실행하되 출력을 새 파일로 리디렉션합니다. 그런 다음 이전 파일을 새로 생성된 파일로 교체합니다.
답변2
에코는 텍스트를 가져오는 데 사용됩니다. Cat filename - 콘솔에서 파일을 인쇄한 다음 이를 사용하여 다른 파일 filename1로 보낸 다음, filename1을 filename으로 이동하여 원하는 파일의 첫 번째 줄에 텍스트를 삽입합니다.
(echo "some text" && cat filename) > filename1 && mv filename1 filename
답변3
POSIX 도구를 사용할 수 있습니다 ex
.
ex a.txt <<eof
1 insert
Sunday
.
xit
eof
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/ex.html
답변4
sed -i '1i new_text' file_name
이 -i
옵션을 지정하지 않으면 오류가 표시되지 않고 표준 터미널에 출력이 표시되지만 파일에 텍스트가 삽입되지는 않습니다.