[英]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
?
你也可以使用paste
和cut
:
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.