5

これは awk の基本的な質問です。しかし、私はこれで問題に直面しており、その理由がわかりません。問題は、次のような単一行で awk コマンドを実行するときです。

awk 'BEGIN {} {print $0;}' FILE 

その後、コードは完全に実行されています

しかし、コードを次のような行に分割すると

 awk '
 BEGIN
 {
 }
 {
      print $0;
 }' FILE

BEGIN にはアクション部分が必要であるというエラーが表示されます。フォーマットしているのと同じコードなので、なぜこのエラーが発生するのか疑問に思っていました。これを解決することは非常に重要です。大量のコード行を awk で書く場合、フォーマットして毎回 1 行にまとめるのが難しいからです。これに関して私を助けてください。ありがとうございました。ノート。この awk をシェル環境で実行しています

4

1 に答える 1

5

'{' right after theBEGIN` を追加すると、エラー メッセージが表示されなくなります。

の開始括弧{は、行BEGINにある必要があります。だからあなたが持っているものを変えてくださいsameBEGIN

awk '
 BEGIN
 {

awk '
 BEGIN {

エラーメッセージは表示されません。

マニュアルには「BEGIN および END ルールにはアクションが必要」と記載されているため、別の問題である可能性があります。これ

awk 'BEGIN {} ...

私には少し奇妙に思えます(そして、何も起こっていない場合、これを行う理由は本当にありません)

以下の @Birei の有益なコメントは、これらのステートメントが「解析される方法は両方のケースで異なることを説明しています。'{'次の行の open はパターンなしのアクションとして解析されますが (BEGIN とは関係ありません)、同じ行では空のアクションを意味します。 BEGIN ルール。」

于 2012-07-17T20:19:31.083 に答える