回答:
awk
プログラムは、条件とアクションのペア、それらに囲まれ、中括弧や行動の外にある一連の条件です。条件がゼロまたは空の文字列と評価された場合、条件は偽と見なされます。それ以外はすべて真です(初期化されていない変数は、コンテキストに応じてゼロまたは空の文字列なので、偽です)。条件またはアクションのいずれかを暗黙指定できます。条件のない中括弧(開始時)は真の条件と見なされ、ヒットした場合は常に実行されます。アクションのない条件は、条件が満たされた場合にのみ行を出力します。
1
それは(括弧内の前のアクションによって変更された可能性があります)行を印刷し、すべての行のデフォルトのアクションを実行して、スクリプトの最後には、アクションなしで条件(常にtrue)です。
これらの種類のショートカットは、構文解析の難読化と誤解を招くため、本当に嫌いです。のようなものを読むと、前のステートメントを変更しawk -F"=" '{OFS="=";gsub(",",";",$2)}1'
ている1
と思うかもしれません。または1
、のエイリアスであると考えるかもしれませんが{print}
、これは技術的には正しくありません。
実際に1
は、完全に別のステートメントです。次のようにステートメントを分離できます。
awk -F"=" '
{OFS="="; gsub(",",";",$2)}
1
'
各awkステートメントの形式はcondition {action}
です。{action}
指定がない場合、デフォルトのアクションは{print}
です。(condition
指定がない場合、デフォルトの条件はtrue
です。)
ここに1
、条件がありtrue
ます。これは、ゼロ以外であるため、常に評価されます。action
省略されているので、デフォルトが{print}
行われます。このように考えることができます:
awk -F"=" '
{OFS="="; gsub(",",";",$2)}
1!=0 {print}
'
awk -F"=" '{OFS="=";gsub(",",";",$2)}{print}'