vi 또는 다른 도구를 통해 패턴 뒤의 단어/숫자를 어떻게 바꿀 수 있습니까? 단, 단어만 바꾸고 뒤따르는 내용은 바꾸지 마십시오.

vi 또는 다른 도구를 통해 패턴 뒤의 단어/숫자를 어떻게 바꿀 수 있습니까? 단, 단어만 바꾸고 뒤따르는 내용은 바꾸지 마십시오.

여러 스크립트에서 포트 번호를 0으로 변경하고 싶지만 포트 0 뒤의 텍스트는 동일하게 유지하고 싶습니다. 이를 수행할 수 있는 방법이 있습니까? vi를 통해 모드를 변경할 수 있지만 포트 번호는 둘 다 고유하므로 변경할 수 없습니다. 감사해요!

local-ip 159.105.100.40 port 5510 remote-ip 152.16.142.104 port 3868 

답변1

Whis는 sed간단합니다.

$ foo="local-ip 159.105.100.40 port 5510 remote-ip 152.16.142.104 port 3868"
$ echo "$foo" | sed 's/port [0-9]\{1,5\}/port 0/g'
local-ip 159.105.100.40 port 0 remote-ip 152.16.142.104 port 0

그래서

# let's suppose that all your scripts are in the same directory
# and have the extension .sh
for file in *.sh; do
  # WARNING: the -i option writes the file
  # so it's better to try first without it
  sed -i 's/port [0-9]\{1,5\}/port 0/g' "$file"
done


vi동일한 명령을 사용할 수 있습니다 .

:s/port [0-9]\{1,5\}/port 0/g

아니면 더 간단합니다.@콰지모도제안:

 :s/port \d\+/port 0/g

관련 정보