나 좀 바꿔야 해
- 에서
Car
Bus
- 도착하다
Helicopter
Airplane
이 두 명령으로 충분합니다.
awk -i inplace '{sub(/Car/,"Helicopter")}1' file
awk -i inplace '{sub(/Bus/,"Airplane")}1' file
이 명령으로도 충분합니다.
sed -e 's/Car/Helicopter/' \
-e 's/Bus/Airplane/' \
-i file
"awk"에서는 "sed"와 마찬가지로 두 가지 작업을 하나의 명령으로 결합하는 것이 가능합니다.
미리 감사드립니다!
답변1
이 시도:
awk -i inplace '{sub(/Car/,"Helicopter")} {sub(/Bus/,"Airplane")}1' file
이제 3개의 블록이 생겼습니다 Condition {Action}
. 1
블록의 특별한 경우입니다 condition {action}
.
아니면 다음을 시도해 보세요.
awk -i inplace '{sub(/Car/,"Helicopter") ; sub(/Bus/,"Airplane")}1' file
, 작업 블록에는 여러 개의 문이 있을 수 있기 때문입니다.
답변2
awk -i inplace '
/^Car$/ { print "Helicopter"; next }
/^Bus$/ { print "Airplane"; next }
{ print }' file
^
및 앵커를 사용하여 전체 줄을 일치시킴으로써 문자열이 다른 줄(예 : ) $
의 하위 문자열로 일치하지 않도록 합니다 . 발견된 행에 대해 작업을 수행한 다음 즉시 실행함으로써 행이 후속 패턴을 트리거할 수 있는 것으로 변경되는 것을 방지합니다.Car
Cart
next