
「〜」区切り文字を使用してテキストファイルの9番目の列を読み取り、テーブル内の対応する11番目の列のデータを取得する必要があります。現在NULL値を持つファイルの列11のデータを置き換える必要があります。
Unixでこれを達成する方法。
col1~col2~col3~col4~col5~col6~col7~col8~col9~col10~col11~col12~col13
data1~data2~data3~data4~data5~data6~data7~data8~data9~data10~~data12~data13
データ data11 が null です。それで、data9の対応する値を取得してdata11を変更したいと思います。
ありがとう
答え1
列9のみ列11にコピーするには、次のスクリプトを使用できます。
awk 'BEGIN {FS="~"; OFS="~"}{$11=$9; print}' <filename>
最初のファイルに1行しかない場合は、次のことができます。
awk -v val=$(awk -F\~ '{print $9}' <filename b>) 'BEGIN {FS="~"; OFS="~"}{$11=val; print}' <filename a>
答え2
完全に理解したかどうかはわかりません。これは近いですか?
awk -F~ '!$11 {$11 = $9}1' OFS="~" file
col1~col2~col3~col4~col5~col6~col7~col8~col9~col10~col11~col12~col13
data1~data2~data3~data4~data5~data6~data7~data8~data9~data10~data9~data12~data13