Unix 파일의 한 줄에서 "ny" 문자열이 발견되면 문자열 "xy"를 다른 문자열 "ab"로 바꾸고 싶습니다.
예시 텍스트:
If we have xy today we can go to ny.
If we have xy tomorrow we can go to ny tomorrow.
If we have mn now we can go to ny now.
출력 텍스트는 다음과 같아야 합니다.
If we have ab today we can go to ny.
If we have ab tomorrow we can go to ny tomorrow.
If we have mn now we can go to ny now.
답변1
sed
아마도 가장 간단한 방법은 다음과 같습니다.
sed '/ny/s/xy/ab/g' file
/ny/
여기에는 패턴을 검색하고 s/xy/ab/g
실제 교체를 수행하는 두 가지 하위 명령이 포함되어 있습니다 . 이는 모든 항목을 대체한다는 점에 유의하세요 xy
. 각 줄의 첫 번째 항목만 바꾸려면 마지막 항목만 제거하세요 g
.
답변2
정답은 awk
:
awk '/ny/ {gsub(/xy/,"ab")}; {print}' test.txt
설명하다
/ny/
ny
: 온라인 상태에서만 다음 명령을 실행합니다.gsub(/xy/,"ab")
: 은 이 줄에서만/xy/
으로 대체됩니다ab
.{print}
: 어느 줄에 있든 상관없이 해당 줄을 인쇄하세요.