ifおよびzオプションでawkを使用する

ifおよびzオプションでawkを使用する

戻り値が整数であることを確認したい場合は、bashスクリプトでこれを使用します。

  if [ -z "$value" ]
    then
    echo 0
    else
    echo $value
  fi

zawkでifオプションを使用しようとしています。たとえば、次の行があります。

PRIMARY SECONDARY CONNECTED 350 800  

私はこれを使用しようとしています:

/bin/awk '{if( -z $1){print "0"}else{print $1}}' script  

私がorまたはor$1に置き換えても、常に返されます。私はawkを間違った方法で使用していますか?$2$3$4$50

ベストアンサー1

他の人が言ったように、これには-zテストがawkなく-z、シェルのテストは整数ではなく空の文字列のテストです。

変数が空であるかどうかをテストするには、次のようにしawkます。空の場合は0を印刷し、それ以外の場合はその値を印刷します。

if (value == "")
    print 0
else
    print value

または、

print (value == "" ? 0 : value)

たとえば、

$ awk -F '\t' '{ print ($1 == "" ? 0 : $1) }' file

入力でタブ区切りの最初の値が空の行に0を印刷し、そうでない場合は実際の値を印刷します。

関連性がある可能性があります(変数の型を見つける場合awk)。

おすすめ記事