私は少し変えなければなりません。
- から
Car
Bus
- 到着
Helicopter
Airplane
これら2つのコマンドで十分です。
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」と同様に、2つの操作を1つのコマンドにまとめることができます。
よろしくお願いします!
答え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