awk条件とヘッダ

awk条件とヘッダ

employee.txt利用可能な次のダミーファイルがありますawk

100  Thomas  Manager    Sales       $5,000
200  Jason   Developer  Technology  $5,500
300  Sanjay  Sysadmin   Technology  $7,000
400  Nisha   Manager    Marketing   $9,500
500  Randy   DBA        Technology  $6,000

$1>を使用してすべての従業員を印刷したい場合は、200次のコマンドを使用して印刷できます。

cat employees.txt | awk '$1 > 200'

ただし、次のように上記の条件でカスタムヘッダーを追加しようとしています。

cat employees.txt | awk '
BEGIN{print "ID|Name|Designation|Department|Salary";OFS="|"}
{print $1 > 200}
END{print"------------------------"}'

上記のコードはうまくいかないようです。

答え1

の「body」にはawk、次の構文が必要です。

condition{command}

condition満足すれば、command現在の行が完了します。次のような場合もあります。

{command}

...がなければcondition実行されます。すべてワイヤー。これはまた働きます:

condition

…そうでない場合は、command印刷awkしてください。$0満足している場合は、ライン全体を印刷してください。condition


あなたはawk次のようにする必要があります:

awk 'BEGIN{print "ID|Name|Designation|Department|Salary";OFS="|"} 
  $1>200{$1=$1;print} END{print"------------------------"}' file

気づく$1=$1。これは、出力フィールド区切り文字のみを変更するために必要です。したがって、フィールドを1つずつ印刷する$1,$2,...か、または強制的にレコードを再作成する必要があります$n=$n

答え2

次のいずれかを使用してください。

 BEGIN { ... }
 $1 > 200
 END { .. }

または

 BEGIN { ... }
 $1 > 200 { print ;}
 END { .. }

使用したディレクティブは、最初のフィールド($ 1)をすべて「filename」200として印刷します。

関連情報