次の構文で区切られたファイルがあります。
A|B|C|D|E
各行の3番目の列でnull(空)値を持つレコード数を見つける方法は?
答え1
そしてawk
:
awk -F '\\|' '$3==""' file.txt
-F '\\|'
フィールド区切り文字をテキストに設定|
$3==""
3番目のフィールドが空であることを確認し、空の場合はレコードを印刷します(デフォルト)
例:
% cat file.txt
A|B|C|D|E
A|B|C|D|E
A|B||D|E
% awk -F '\\|' '$3==""' file.txt
A|B||D|E
実際には、1 つの文字だけをフィールド区切り文字として使用すると文字通り処理されるため、エスケープする必要はありません。 @Stéphane Chazelas:
awk -F '|' '$3==""' file.txt
答え2
一方通行:
awk -F"|" '{if (length($3) == 0) ++count } END { print count }' yourfile