Как объединить два файла с разным количеством строк, используя условие пустой строки?

При новой установке RHEL 7.5 файл /etc/dhcp/dhclient.conf не существует, но если вы создадите его, содержащий только нужные параметры, это, похоже, сработает. Бьюсь об заклад, это работает и для RHEL 6.

0
06.02.2021, 01:12
2 ответа
$ awk 'NR==FNR{a[NR]=$0; next} {print $0 (pNF ? "" : OFS a[++c]); pNF=NF}' file2 file1
a11 a12 a13 x1 X2
b11 b12 b13
c11 c12 c13

a21 a22 a23 y1 y2
b21 b22 b23
c21 c22 c23
d21 d22 d23

a31 a32 a33 z1 z2
b31 b32 b33
3
18.03.2021, 22:32

Использование оператора диапазона awk:

$ awk '
  !B {a[NR]=$0;next}
  NF,!NF {
    if (!f++) $(NF+1) = a[++i]
    f = NF
  };1
'./file2 B=1./file1

Использование утилиты GNU awk в режиме абзаца:

$ awk '
    BEGIN {
      factory_setting = RS
      RS = ""
      paragrph_mode = RS
      OFS = FS = "\n"
      ORS = "\n\n"
      f2 = ARGV[2]
      ARGV[2] = ""
    }
    {
      RS = factory_setting
        if (getline t < f2 > 0) $1=$1" "t 
      RS = paragrph_mode
    }1
' ./file1./file2
a11 a12 a13 x1 x2
b11 b12 b13
c11 c12 c13

a21 a22 a23 x2 y2
b21 b22 b23
c21 c22 c23
d21 d22 d23

a31 a32 a33 x3 y3
b31 b32 b33

$
0
18.03.2021, 22:32

Теги

Похожие вопросы