我想使用“~”分隔符读取文本文件的第 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>
如果第一个文件只有一行,您可以执行以下操作:
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