GNU/Linux >> Linux の 問題 >  >> Linux

awkスクリプトの最後にある1の意味は何ですか

awk program は一連の条件とアクションのペアであり、条件は中括弧の外側にあり、アクションはそれらで囲まれています。条件がゼロまたは空の文字列に評価される場合、条件は偽と見なされます。それ以外はすべて真です (初期化されていない変数は、コンテキストに応じてゼロまたは空の文字列であるため、偽となります)。条件またはアクションのいずれかを暗示することができます。条件のない中かっこ (開始時) は真の条件があると見なされ、ヒットした場合は常に実行されます。アクションのない条件は、条件が満たされた場合にのみ行を出力します。

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}
'

1 すべての行を印刷することを意味します。

awk ステートメントは次の記述と同じです:

awk -F"=" '{OFS="=";gsub(",",";",$2);print $0;}'

Linux
  1. ファイル名の末尾のチルダ(〜)はどういう意味ですか?

  2. Linux での curl -k -i -X の意味は何ですか?

  3. ls -l のパーミッションの末尾にある + は何を意味しますか?

  1. シェルスクリプト行の最後にあるアンパサンドとはどういう意味ですか?

  2. コロンビルトイン「:」はどのような目的に役立ちますか?

  3. POSIX とはどういう意味ですか?

  1. 行「!/bin/sh -e」は何をしますか?

  2. Linuxコマンドの最後の&はどういう意味ですか?

  3. bash/Makefileの二重ドル記号の意味は何ですか?