sed를 사용하여 일치하는 문자 바꾸기

sed를 사용하여 일치하는 문자 바꾸기

문자열이 있습니다.

172.16.1.5] "80 EE 73 2F 0B 40

] "다음 공백을 모두 콜론으로 바꿔야 합니다. 현재 sed -r 's/[ ]+/:/g'내가 얻은 출력을 사용하고 있지만 172.16.1.5]:"80:EE:73:2F:0B:40:대괄호 뒤의 첫 번째 공백을 유지해야 합니다.

sed를 사용하여 일치시킨 후에만 문자의 모든 인스턴스를 어떻게 바꿀 수 있습니까?

답변1

다양한 접근 방식이 있습니다.

조건부 루프, 한 번에 한 칸씩 교체:

sed -e :1 -e 's/\(\] .*\) /\1:/; t1'

접두사 저장, 접두사 삭제, 교체, 접두사 복원:

sed '/\] /{ s//&\
/; h; s/.*\n//; s/ /:/g; H; g; s/\n.*\n//;}'

입력에 대체 항목이 포함되어 있지 않으면 둘 다 아무것도 수행하지 않습니다 "] ".

답변2

당신은 그것을 사용할 수 있습니다

echo '172.16.1.5] "80 EE 73 2F 0B 40' | sed -r 's/ +/:/g;s/\]:/\] /g'

가지다

172.16.1.5] "80:EE:73:2F:0B:40

관련 정보