我有一个4列的CSV文件,data.csv
使用“@”作为分隔符,例如:
1@fish@ocean@likes to swim in the ocean
2@whale@ocean@likes to swim in the ocean
要仅编辑第4列,我使用了以下命令:
awk -F "@*" '{print $4}' data.csv > temp.csv
然后我运行了一些额外的脚本来修改temp.csv
。
现在,我需要将temp.csv
的内容返回到data.csv
,替换data.csv
第4列中的所有内容。
如何使用data.csv
中已修改的行替换temp.csv
第4列的内容?
答案 0 :(得分:4)
您还可以使用paste
和cut
:
cut -d@ -f1-3 data.csv | paste -d@ - temp.csv
答案 1 :(得分:3)
我赞成了另一个答案,但是为了让你了解awk中的方法:
首先准备好temp.csv
文件:
$ cut -d@ -f4 data.csv | sed -e 's,ocean,lava,g' > temp.csv
当您从temp.csv
读取每一行时,您从data.csv
读取一行,覆盖该行中的第四个字段:
$ awk -F@ -vOFS=@ '{ getline $4 < "temp.csv" ; print }' data.csv
1@fish@ocean@likes to swim in the lava
2@whale@ocean@likes to swim in the lava