2

我有一个 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.

现在,我需要返回 to 的内容temp.csvdata.csv替换data.csv.

如何data.csv用编辑的行替换第 4 列的内容temp.csv

4

2 回答 2

4

您还可以使用pasteand cut

cut -d@ -f1-3 data.csv | paste -d@ - temp.csv
于 2013-11-09T12:57:29.010 回答
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
于 2013-11-09T12:56:44.597 回答