2013-11-09 1 views
2

У меня есть файл в CSV-4-колонки, data.csv с помощью "@" в качестве разделителя, например:Как заменить столбец CSV-файла на строки из другого файла в BASH?

[email protected]@[email protected] to swim in the ocean 
[email protected]@[email protected] to swim in the ocean 

Для редактирования только 4-й столбец, я использовал эту команду:

awk -F "@*" '{print $4}' data.csv > temp.csv 

Тогда я выполнили некоторые дополнительные скрипты для изменения temp.csv.

Теперь мне нужно вернуть содержимое temp.csv в data.csv, заменив все в 4-м столбце data.csv.

Как заменить содержимое 4-го столбца data.csv на отредактированные строки в temp.csv?

ответ

3

Я upvoted другого ответа, но, чтобы дать вам представление о подходе в AWK:

Имея первый подготовленную ваш temp.csv файл:

$ cut [email protected] -f4 data.csv | sed -e 's,ocean,lava,g' > temp.csv 

Вы затем прочитать строку из temp.csv, как вы читаете каждая строка из data.csv, перезаписи четвертого поля в строке:

$ awk [email protected] [email protected] '{ getline $4 < "temp.csv" ; print }' data.csv 
[email protected]@[email protected] to swim in the lava 
[email protected]@[email protected] to swim in the lava 
+0

Или, еще проще, 'СЭД 's/\ \ океан \/\ 1 \ 2lava \ 3/г (* @ \.) (* \.) (* \.)' данные .csv' (нет необходимости в временном файле). –

Смежные вопросы