한 문자를 다른 문자로 바꾸되 다른 문자는 포함하지 않음

한 문자를 다른 문자로 바꾸되 다른 문자는 포함하지 않음

다음 출력이 있고 IP 주소 뒤의 "/"로 시작하는 모든 항목을 vlan이라는 단어의 첫 번째 인스턴스까지(포함하지 않음) 바꾸고 싶습니다. 이것이 어떻게 달성될 수 있습니까?

sy3-fa-c3r801-lb-3b.audc1.xxxxx.com address 192.168.1.2/30 allow-service { default  traffic-group Common/traffic-group-local-only vlan Common/vlan-HA }
sy3-ibr-lb-1a.audc1.xxxxx.com address 160.34.63.68/29 floating enabled traffic-group Common/traffic-group-1 unit 1 vlan Common/vlan13 
sy3-ibr-lb-1a.audc1.xxxxx.com address 160.34.63.193/26 floating enabled traffic-group Common/traffic-group-1 unit 1 vlan Common/vlan23 
sy3-ibr-lb-1a.audc1.xxxxx.com address 192.168.1.1/30 allow-service { default  traffic-group Common/traffic-group-local-only vlan Common/vlan-HA }
sy3-ibr-lb-1a.audc1.xxxxx.com address 160.34.63.194/26 traffic-group Common/traffic-group-local-only vlan Common/vlan23 
sy3-ibr-lb-1a.audc1.xxxxx.com address 160.34.63.69/29 traffic-group Common/traffic-group-local-only vlan Common/vlan13 
sy3-ibr-lb-1b.audc1.xxxxx.com address 160.34.63.68/29 floating enabled traffic-group Common/traffic-group-1 unit 1 vlan Common/vlan13 
sy3-ibr-lb-1b.audc1.xxxxx.com address 160.34.63.193/26 floating enabled traffic-group Common/traffic-group-1 unit 1 vlan Common/vlan23 
sy3-ibr-lb-1b.audc1.xxxxx.com address 192.168.1.2/30 allow-service { default  traffic-group Common/traffic-group-local-only vlan Common/vlan-HA }
sy3-ibr-lb-1b.audc1.xxxxx.com address 160.34.63.195/26 traffic-group Common/traffic-group-local-only vlan Common/vlan23 
sy3-ibr-lb-1b.audc1.xxxxx.com address 160.34.63.70/29 traffic-group Common/traffic-group-local-only vlan Common/vlan13 

답변1

sed 's/\(.*[0-9]\)\/.* \(vlan.*\)/\1REPLACEMENT\2/' file

앞의 숫자로 첫 번째 발생을 일치시키고 /공백 문자로 첫 번째 발생을 일치시킵니다.vlan

답변2

작동할 수도 있음

sed -r 's/vlan/\x01/;s/(([0-9]{1,3}[.]?){4})\/.*\x01/\1...vlan/' file

vlan탐욕을 피하기 위해 첫 번째 자리 표시자를 사용하십시오 sed. 예, IP의 "선택적" 지점에 작은 구멍이 있습니다. 필요한 경우 더 복잡한 정규식을 사용하세요.

관련 정보