Добавить новый столбец в файл - PullRequest
14 голосов
/ 26 сентября 2011

Как добавить новый столбец в файл с кодами awk?

original.file

F1 F2 F3 ..F10 

добавить F11 в original.file

F1 F2 F3 ..F10 F11

Ответы [ 3 ]

19 голосов
/ 26 сентября 2011

awk '{print $0, "F11"}' original.file

7 голосов
/ 26 сентября 2011

try:

awk 'BEGIN{getline to_add < "f3"}{print $0,to_add}' f

Считывает столбец для добавления из файла "f3" и сохраняет его в переменной to_add.После этого он добавляет столбец к каждой строке файла f.

HTH Chris

3 голосов
/ 12 октября 2018

Если вы хотите добавить столбец в файл, вы можете сделать следующее.

примечание: Мы предполагаем, что разделитель полей FS равен строке "fs". Вы можете заменить это на что угодно, или если вы просто используете в качестве разделителя полей, вы можете удалить часть BEGIN{FS=OFS="fs"} в любом из следующих решений.

добавить столбец в начале:

awk 'BEGIN{FS=OFS="fs"}{print value OFS $0}' file

добавить столбец в конце:

awk 'BEGIN{FS=OFS="fs"}{print $0 OFS value}' file

добавить столбец перед столбцом n:

awk 'BEGIN{FS=OFS="fs"}{$n = value OFS $n}1' file

добавить столбец после столбца n:

awk 'BEGIN{FS=OFS="fs"}{$n = $n OFS value}1' file

добавить столбец перед каждым из столбцов n1 <<code>n2 <... <<code>nm: (начало сзади)

awk 'BEGIN{FS=OFS="fs"; split("n1,n2,n3,...,nm",a,",")}
     {for(i=m;i>0;--i) $(a[i]) = value OFS $(a[i])}1' file

или для разных значений

awk 'BEGIN{FS=OFS="fs"; split("n1,n2,n3,...,nm",a,","); split("value1,value2,...,valuem",v,",")}
     {for(i=m;i>0;--i) $(a[i]) = v[i] OFS $(a[i])}1' file

добавить столбец после каждого столбца n1 <<code>n2 <... <<code>nm: (начало сзади)

awk 'BEGIN{FS=OFS="fs"; split("n1,n2,n3,...,nm",a,",")}
     {for(i=m;i>0;--i) $(a[i]) = $(a[i]) OFS value}1' file

или для разных значений

awk 'BEGIN{FS=OFS="fs"; split("n1,n2,n3,...,nm",a,","); split("value1,value2,...,valuem",v,",")}
     {for(i=m;i>0;--i) $(a[i]) = $(a[i]) OFS v[i]}1' file
...