[
] Вы можете сделать это полностью с помощью [] POSIX-специфических функций [] join[
][]. [
] [
join -t, csv[12] | join -t, - csv3
] [
]Используя ваши []csv1[
], []csv2[
] и []csv3[
] файлы в том виде, в котором они были размещены, это дает: [
] [
$ join -t, csv[12] | join -t, - csv3
2,qwe,rty,2014-04-03,j,k,2014-04-01,a,s,d,f,g,2014-04-01
3,zxc,cvb,2014-04-05,a,s,2014-04-04,d,f,g,h,j,2014-04-06
]
Спецификация может помочь
awk '/PATTERN/{print;getline;while(!/lineN/){$(NF+1)=" 1";print;getline}}1'
Или продлить Idea @janis :
awk '/lineN/{f=0}f{$(NF+1)=" 1"}/PATTERN/{f=1}1'
Вы говорите, что только литеральные линии «XYZ» после шаблона должны быть заменены.
awk '
/PATTERN/ { f=1 }
f && /x y z/ { print $0, 1 ; next }
{ print }
'
Если это линии с тремя произвольными полями, затем используют
awk '
/PATTERN/ { f=1 }
f && NF==3 { print $0, 1 ; next }
{ print }
'