Как я могу использовать awk, чтобы напечатать файл заголовка, а затем разделить табуляцией значения в файл csv? - PullRequest
0 голосов
/ 17 января 2020

Я удалил свой исходный вопрос и должен использовать другой подход.

Теперь у меня есть фактический файл значений, разделенных табуляцией:

name -> (tab) address -> (tab) city ​​-> (tab) State et c.

Я хочу взять этот файл и преобразовать его в csv.

Но верхней строке нового csv нужны реальные имена столбцов, которые я могу войти. («имя», «адрес» и т. д. c.)

Как я могу это сделать с помощью CSV?

1 Ответ

0 голосов
/ 18 января 2020

Перефразируя ваш вопрос:

У меня есть файл с разделителями табуляции без заголовка.
Я хочу преобразовать его в разделенный запятыми, добавив при этом заголовок.

Вот один способ (при условии, что ваша оболочка bash)

header=(Loc Name Address Apt City State Zip)
(IFS=$'\t'; echo "${header[*]}"; cat file) |
  awk -F'\t' -v OFS=',' '{$1 = $1; print}'

Часть $1 = $1 является идиом awk: awk не будет пересчитывать строку с использованием нового разделителя полей если данные не были обновлены.

С учетом этого входного файла

$ cat -A file
US^IJohn^I742 Evergreen Terr.^I^ISpringfield^IMA^I01101$
US^IJane^I666 5th Avenue^I#1408^INew York^INY^I11101$

команда выводит

Loc,Name,Address,Apt,City,State,Zip
US,John,742 Evergreen Terr.,,Springfield,MA,01101
US,Jane,666 5th Avenue,#1408,New York,NY,11101
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...