簡體   English   中英

如何用BASH中另一個文件中的行替換CSV文件的列?

[英]How to replace a column of a CSV file with lines from another file in BASH?

我有一個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

我怎樣才能更換的第四列的內容data.csv與編輯后的行temp.csv

你也可以使用pastecut

cut -d@ -f1-3 data.csv | paste -d@ - temp.csv

我贊成其他答案,但是讓您對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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM