문자열이 있습니다.
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