2014-11-11 3 views
1

У меня есть 3 файловЗаменить столбец, используя AWK

1file

14/09/15 
14/09/15 
14/09/15 
14/09/15 
14/09/15 

2file

14/09/01 
14/09/01 
14/09/01 
14/09/01 
14/09/01 

и 3file

15/09/14,11-37,01/09/14,1224A,0G,71%,RGS 
15/09/14,11-41,01/09/14,2700A,0G,94%,RAN 
15/09/14,11-43,01/09/14,2701A,0G,100%,RAN 
15/09/14,11-44,01/09/14,2701B,0G,92%,RAN 
15/09/14,11-46,01/09/14,2708A,0G,88%,RAN 

мне нужно заменить столбец 1 из 3f с столбец 1 из 1f и третий m 3f с колонкой 1 из 2f

Как заменить awk?

+0

я попытался AWK «FNR == NR {а [NR] = $ 3; следующий} {$ 1 = а [FNR]} 1 awk, как это, но не работает, спасибо за поддержку – Dorian

ответ

1

Следующий код AWK будет полезным

$ awk 'BEGIN{OFS=FS=","}NF==1{line[FNR]=line[FNR]","$0} NF>1{split(line[FNR], a); $1=a[2]; $2=a[3]; print $0}' 1file 2file 3file 
14/09/15,14/09/01,01/09/14,1224A,0G,71%,RGS 
14/09/15,14/09/01,01/09/14,2700A,0G,94%,RAN 
14/09/15,14/09/01,01/09/14,2701A,0G,100%,RAN 
14/09/15,14/09/01,01/09/14,2701B,0G,92%,RAN 
14/09/15,14/09/01,01/09/14,2708A,0G,88%,RAN 

Что она делает ??

  • OFS=FS="," наборов выходных полей сепаратора OFS и полевой сепаратор FS в ,

  • NF==1{line[FNR]=line[FNR]","$0} Если количество полей/columsn, NF один, сохранить значение в line переменной разделенным запятыми

  • NF>1{split(line[FNR], a); $1=a[2]; $2=a[3]; print $0} принимает меры, когда NF больше, чем один

    • split(line[FNR], a); разделить переменную line на массив a

    • $1=a[2]; $2=a[3]; устанавливает первый и второй столбец

    • print $0 печатает все записи

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