나는 파일의 한 줄에 텍스트를 추가하는 방법을 연구하고 있습니다.
그래서 텍스트 파일의 내 줄은 다음과 같습니다
hosts allow = 192.168.122. 172.24.0
IP를 추가하여 라인이 다음과 같이 보이도록 하고 싶습니다.
hosts allow = 192.168.122. 192.12.0. 172.24.0
시행착오를 거쳐 얻은 것은 다음과 같습니다.
sed -i '/allow/ s/.*/&,192.12.0./' testfile
이것은 만든다:
hosts allow = 192.168.122. 172.24.0. 192.12.0.
답변1
awk
행의 끝에서 두 번째 필드에 문자열을 삽입하는 데 사용됩니다 .
$ awk '/allow/ { $(NF+1) = $NF; $(NF-1) = "192.12.0." } { print }' file
hosts allow = 192.168.122. 192.12.0. 172.24.0
첫 번째 블록은 file
문자열이 포함된 모든 줄에서 실행됩니다 allow
. 먼저 마지막 필드를 한 $NF
단계 이동합니다 $(NF+1)
. 이렇게 NF
1씩 늘어나게 됩니다 . 그런 다음 문자열을 두 번째에서 마지막 필드에 할당합니다 $(NF-1)
.
그런 다음 모든 줄을 인쇄하십시오.
출력을 새 파일로 리디렉션하고 파일을 해당 위치로 이동합니다.
awk ...as above... file >file.new && mv file.new file
답변2
sed 's/= [^ ]*/& 192.12.0/'
=
다음 공백 앞의 기호, 공백 및 모든 문자를 캡처합니다 . 바로 이 부분입니다 = 192.168.122.
. 그런 다음 일치하는 모든 문자를 해당 문자로 바꾸고 &
(즉, 이 부분을 변경하지 말고 반환하기만 하면 됩니다) 원하는 ip 를 추가합니다 192.12.0
.
입력하다
hosts allow = 192.168.122. 172.24.0
산출
hosts allow = 192.168.122. 192.12.0 172.24.0