列が多く、他の列に空のセルがあるファイルがあります。 3列目のみ空のセルをNAに変更したいです。私のファイル:
1 id1 info
2 otherinfo
3 id2
4 noinfo
5 id3
6 id4 info2
したがって、出力は次のようになります。
1 id1 info
2 otherinfo
3 id2 NA
4 noinfo
5 id3 NA
6 id4 info2
私はこのコマンドを試しました(欠落値空間をゼロに置き換える)、しかし、すべての空のセルを置き換えます。どんな提案がありますか?
答え1
短いアッ解決策:
awk -F'[[:space:]]' '$2 && !$3{ $3="NA" }1' file
出力:
1 id1 info
2 otherinfo
3 id2 NA
4 noinfo
5 id3 NA
6 id4 info2
答え2
ファイルに固定幅の列がある場合は、GNU awkを使用してその列を解析できますFIELDWIDTHS
。たとえば、次のようになります。
awk -v FIELDWIDTHS='1 1 3 1 99' -v OFS="" '!$5 { $5 = " NA" } 1' infile
出力:
1 id1 info
2 otherinfo
3 id2 NA
4 noinfo
5 id3 NA
6 id4 info2
答え3
これはsed
私にとって効果的です。
sed -E 's/(.*id[0-9]{1,}$)/\1 NA/'
例:
sed -E 's/(.*id[0-9]{1,}$)/\1 NA/' NA.txt
1 id1 info
2 otherinfo
3 id2 NA
4 noinfo
5 id3 NA
6 id4 info2
NA.txt
このファイルはどこにありますか?
cat NA.txt
1 id1 info
2 otherinfo
3 id2
4 noinfo
5 id3
6 id4 info2