Как я могу добавить новый столбец в файл с кодами awk?
исходный файл
F1 F2 F3 ..F10
добавить F11 в исходный файл
F1 F2 F3 ..F10 F11
Как я могу добавить новый столбец в файл с кодами awk?
исходный файл
F1 F2 F3 ..F10
добавить F11 в исходный файл
F1 F2 F3 ..F10 F11
пытаться:
awk 'BEGIN{getline to_add < "f3"}{print $0,to_add}' f
Читает добавляемый столбец из файла "f3" и сохраняет его в переменной to_add. После этого он добавляет столбец к каждой строке файла f.
HTH Крис
Если вы хотите добавить столбец в файл, вы можете сделать следующее.
примечание. Мы предполагаем, что разделитель полей 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
‹ n2
‹ ... ‹ 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
‹ n2
‹ ... ‹ 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
print $0
. См. unix.stackexchange.com/q/63891/273492.
- person kvantour; 10.01.2019
awk '$0=$0"F11"' original.file
- person fedorqui 'SO stop harming'; 27.09.2013
awk -v OFS=x '{print $0, "F11"}'
если вы хотите изменить разделитель полей вывода (x)
- person Neil McGuigan; 01.08.2016
paste
вместоawk
, но и другие ответы также могут быть полезны. - person mouviciel   schedule 26.09.2011