特定の列の空のセルを置き換える方法

特定の列の空のセルを置き換える方法

列が多く、他の列に空のセルがあるファイルがあります。 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

関連情報