![파일에서 단어를 찾아 그 아래 두 줄 아래에 텍스트를 삽입하려면 어떻게 해야 합니까?](https://rvso.com/image/97225/%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%EB%8B%A8%EC%96%B4%EB%A5%BC%20%EC%B0%BE%EC%95%84%20%EA%B7%B8%20%EC%95%84%EB%9E%98%20%EB%91%90%20%EC%A4%84%20%EC%95%84%EB%9E%98%EC%97%90%20%ED%85%8D%EC%8A%A4%ED%8A%B8%EB%A5%BC%20%EC%82%BD%EC%9E%85%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
키워드를 찾아서 2줄 아래로 텍스트를 입력하고 싶은 파일이 있습니다.
예를 들어 내가 가지고 있는 파일에 다음 단어가 포함되어 있다고 가정해 보겠습니다.
the
cow
goes
moo
나는 "cow"라는 단어를 찾고 "yay"라는 텍스트를 파일의 cow라는 단어 아래 두 줄에 입력할 수 있기를 원합니다.
the
cow
goes
moo
yay
나는 이것이 완료될 것이라고 믿지만 sed
작동시킬 수는 없습니다.
어떤 도움이라도 대단히 감사하겠습니다.
답변1
$ cat ip.txt
the
cow
goes
moo
$ sed '/cow/{N;N; s/$/\nyay/}' ip.txt
the
cow
goes
moo
yay
N;N;
다음 두 줄을 얻으십시오s/$/\nyay/
다른 줄 추가
답변2
와 함께 awk
:
awk '/cow/ {print; getline; print; getline; print; print "yay"; next}; 1'
/cow/
cow
레코드에서 일치하고{print; getline; print; getline; print; print "yay"; next}
그 줄을 인쇄하고getline
다음 줄을 가져옵니다. 그 줄도 인쇄되고 다음에도 동일하고yay
인쇄된 다음 다음 줄로 이동합니다(next
)1
(true) 나머지 줄을 기본 작업으로 인쇄합니다.
경고:
- 검색할 패턴과 EOF 사이에 두 줄 미만이 있으면 패턴에서 시작하는 마지막 줄을 반복하여 그 사이에 두 줄을 만듭니다.
예:
% cat file.txt
the
cow
goes
moo
% awk '/cow/ {print; getline; print; getline; print; print "yay"; next}; 1' file.txt
the
cow
goes
moo
yay
답변3
다른sed
sed '/cow/! b;n;n;a\yay' file.txt
다른앗
awk '{print;this--};/cow/{this=2}! this{print "yay"}' file.txt
답변4
와 함께ed
ed file << EOF
/cow/+2a
yay
.
,p
q
EOF
수정된 출력을 인쇄합니다. 또는
ed file << EOF
/cow/+2a
yay
.
wq
EOF
또는 ( bash
한 줄로)
printf '%b\n' '/cow/+2a' 'yay\n.' 'wq' | ed file
변경 사항을 제자리에 기록합니다.