我需要改变
- 从
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
in Cart
)。通过对找到的行进行操作,然后立即执行,next
我们可以防止将行更改为可能触发后续模式的内容。