지금 나는 사용하고 있어요
echo "Hello World" >> file.txt
[option]
파일에 일부 텍스트를 추가하는 것이 가능 하지만 특정 문자열 아래에 텍스트를 추가해야 합니까 sed
?
예를 들어:
입력 파일
Some text
Random
[option]
Some stuff
결과물 파일
Some text
Random
[option]
*inserted text*
Some stuff
답변1
일치 후 행 추가
sed '/\[option\]/a Hello World' input
일치 앞에 행 삽입
sed '/\[option\]/i Hello World' input
-i.bkp
또한 sed 옵션을 사용하여 입력 파일을 내부에서 백업하고 편집할 수 있습니다.
답변2
예, 다음을 사용할 수 있습니다 sed
.
sed '/pattern/a some text here' filename
한 가지 예:
$ cat test
foo
bar
option
baz
$ sed '/option/a insert text here' test
foo
bar
option
insert text here
baz
$
답변3
그리고 awk
:
awk '1;/PATTERN/{ print "add one line"; print "\\and one more"}' infile
일부 문자는 문자 그대로 포함될 수 없으므로 다음을 사용해야 합니다.이스케이프 시퀀스(백슬래시로 시작합니다.) 예를 들어 리터럴 백슬래시를 인쇄하려면 를 써야 합니다 \\
.
사실상 동일 sed
하지만 추가로 텍스트에 포함된 모든 줄 바꿈 앞에는 백슬래시가 와야 합니다.
sed '/PATTERN/a\
add one line\
\\and one more' infile
이스케이프 시퀀스에 대한 자세한 내용은 설명서를 참조하세요.
또한 일부 의견을 해결하기 위해 위 명령은 파일을 내부에서 편집하지 않고 결과를 표준 출력으로 인쇄합니다. 입력 파일을 실제로 수정하려면 스위치를 사용하거나(매뉴얼 확인) 지원하는 경우 스위치를 사용 하거나 임시 파일로 리디렉션한 다음 원본 파일을 덮어쓸 수 있습니다 -i
.awk
sed
cmd infile > outfile
mv outfile infile
또는 ed
/를 사용하여 ex
모든 플랫폼에 있는 파일을 편집합니다.
ex -s infile <<\IN
/PATTERN/a
add one line
and one more
.
w
q
IN
기억하세요: ed
추가 및 삽입에는 //를 사용하고, 끝으로 이동하려면 를 사용하여 삽입하세요.sed
ex
a
i
awk
1
답변4
이는 이 유틸리티를 사용하여 달성할 수도 있습니다 ed
. 를 사용하는 것이 더 쉽지만 sed
추가 유틸리티에 익숙해지는 것이 좋습니다. (저는 특별히 ed를 사용하여 이 작업을 수행하는 방법을 찾기 위해 이 페이지를 방문했습니다. 저는 이미 sed에서 이 작업을 수행하는 방법을 알고 있습니다.)
예제 파일의 경우(참조용으로 인쇄된 줄 번호):
1 Some text
2 Random
3 [option]
4 Some stuff
제안된 출력을 얻기 위한 명령은 다음 ed
과 같습니다.
4i
*inserted text*
.
w
q
설명하다:
- 4행으로 이동하여 삽입 모드를 시작합니다. (i)
- 다음에 추가*텍스트 삽입*(개행 포함)
- 삽입 모드 종료(.)
- 파일(w)에 쓰고 종료
ed
(q)
하나의 명령을 사용하여 이 모든 것을 하나로 묶을 수 있습니다여기에 있는 문자열:
ed filename.txt <<< '4i
*inserted text*
.
w
q
'