を使用して特定の行のフィールド数を確認するには、フィールドawk
が1つしかない場合は、その行の最後に何かを追加しますか?
$ cat myFile
0: stackoverflow com
1: w3 org
2:
3: wikipedia org
4:
次のような出力が必要です。
$ cat myFile
0: stackoverflow com
1: w3 org
2: NULL
3: wikipedia org
4: NULL
フィールド数のテストを追加します。
awk 'NF==1 { print $0, "NULL"; next }1' file
結果:
0: stackoverflow com
1: w3 org
2: NULL
3: wikipedia org
4: NULL
$ awk '{if (NF==0){print "NULL"}else print $0}' /tmp/myFile
stackoverflow com
w3 org
NULL
wikipedia org
NULL
NF
Number(of)Fieldsを意味するawk特殊変数です。これは、値が含まれるNumberOfFieldsになります。NF==1
データに実際に番号付きの行がある場合と比較して、値を変更できます。これは、番号付けユーティリティまたはエディタを使用した結果であると思いました。
このelse
ステートメントは、「フィールド数がゼロではないレコードはすべて、1つ以上のフィールドを持つレコードを出力することを意味します。
IHTH
sed
答え(私はトピックから外れていることを知っています):
sed 's/^\([[:digit:]]\+:\)[[:space:]]*$/& NULL/g' myFile
bashの回答(まだトピックから外れています):
while read -a a; do
if [[ -z "${a[1]}" ]]; then
echo "$a NULL"
else
echo "${a[@]}"
fi
done < myFile
猫の皮を剥ぐ方法は複数あります。
awk 'BEGIN{FS=OFS=":"}!$2{$2=" NULL"}1' file
テスト:
kent$ cat test.txt
0: stackoverflow com
1: w3 org
2:
3: wikipedia org
4:
kent$ awk 'BEGIN{FS=OFS=":"}!$2{$2=" NULL"}1' test.txt
0: stackoverflow com
1: w3 org
2: NULL
3: wikipedia org
4: NULL