특정 줄 끝에 IP를 입력하세요. [닫기]

특정 줄 끝에 IP를 입력하세요. [닫기]

동일한 패턴을 따르는 다음 file.txt가 있고 IP를 추가하여 파일의 위치를 ​​수정하고 싶습니다.

# gfhfhgfh
gfhfghgfhgfhgfh
MACs 
# access
USER CONSOLA *,!10.249.247.3,!10.249.245.65
/bin/false

사용자 콘솔을 사용자로 포함하는 줄 끝에 IP를 추가하고 싶습니다.

 USER CONSOLA *,!10.249.247.4,!10.249.245.65,!10.249.245.90,

현재는 문서 전체에 IP만 추가할 수 있지만 다음을 사용하여 특정 코드 줄에는 추가할 수 없습니다.

sed 's/\r\?$/,!10.10.11.1/' file.txt 

답변1

줄의 시작 부분(앵커)에서 ^일치시키고 $줄 끝(앵커)의 새 텍스트로 바꿉니다.

$ sed '/^USER CONSOLA/ s/$/,!10.10.11.1/' file.txt
# gfhfhgfh
gfhfghgfhgfhgfh
MACs 
# access
USER CONSOLA *,!10.249.247.3,!10.249.245.65,!10.10.11.1
/bin/false

파일에 보존하려는 Windows/DOS 스타일 CRLF 줄 끝이 있는 경우 위의 내용을 다음과 같이 수정하세요.

sed '/^USER CONSOLA/ s/\r$/,!10.10.11.1\r/' file.txt

만약 너라면아니요DOS 엔딩을 유지하려면 먼저 이를 제거 dos2unix하거나 sed에서 이 작업을 수행하는 추가 명령을 추가하세요.

sed -e 's/\r$//' -e '/^USER CONSOLA/ s/$/,!10.10.11.1/' file.txt

답변2

동일한 효과를 얻으려면 다음 방법을 사용하십시오.

sed  "/USER CONSOLA/s/.*/&\,\!10.249.245.90,/g" filename

산출

# gfhfhgfh
gfhfghgfhgfhgfh
MACs
# access
USER CONSOLA *,!10.249.247.3,!10.249.245.65,!10.249.245.90,
/bin/false

관련 정보