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として印刷します。