行のすべての値をN / Aに置き換えます

行のすべての値をN / Aに置き換えます

行のすべての値をN / Aに変更する方法を学びたいと思います。例えば。すべての列で、行77 132 140 142 155 156 157と175をN / Aに置き換える必要があります。たとえば、

RS,RPHG,LPHG,RITC
13.7801604545457,3.10785528409178,-38.443658181819,-8.25890473295385
-12.5663095454547,-33.8395547159089,-3.44606818181819,-24.8157817329538
35.1140204545463,-35.4853647159089,-33.8231881818192,26.6855902670459
-29.9357495454533,-34.5783047159075,-50.3323381818191,2.0808182670462

ベストアンサー1

$ awk -F, -vOFS=, 'FNR==2 || FNR==4 { for (i=1;i<=NF;++i) $i="N/A" } 1' file
RS,RPHG,LPHG,RITC
N/A,N/A,N/A,N/A
-12.5663095454547,-33.8395547159089,-3.44606818181819,-24.8157817329538
N/A,N/A,N/A,N/A
-29.9357495454533,-34.5783047159075,-50.3323381818191,2.0808182670462

FNR現在のファイル内の現在のレコードのシリアル番号(「現在のファイルの行番号」)。 2つまたは4つの場合は、すべてのフィールド(1からNFフィールド数まで)を繰り返し、各フィールドを文字列に設定しますN/A1最後の末尾は、{ print }すべての行(変更または変更されていない)が印刷されるようにする短い書き込み方法です。

削除する必要があるすべての行番号(1行につき1つの番号)を含む添付ファイルがある場合:

awk -F, -vOFS=, 'FNR==NR { a[$1]; next }
                 FNR in a { for (i=1;i<=NF;++i) $i="N/A" } 1' lines file

lines行番号を持つファイルはどこにありますか?

ここでFNR==NR私たちが読んでいるなら最初文書(lines文書)。この場合、行番号を入力して配列に項目を作成し、a次の行に進みます。NR~であるみんなFNRこれまでに読み込んだ行数は、2番目のファイルから読み込みを開始する前の行数と同じです。

FNRそうでなければ私たちNRは読んでいます。第二ファイル(fileデータを含むファイル)。次に、現在の行番号が配列のキーであるかどうかをテストしa、そうであれば、前のようにすべてのフィールドを置き換えますN/A

おすすめ記事