как повторять значения переменной B до тех пор, пока количество переменных A не будет исчерпано

Вы можете избежать обратных кавычек, используя обратную косую черту, как показано ниже:

echo "\`wc -l *\`"
1
27.08.2021, 06:04
1 ответ

Предполагая, что когда во втором столбце закончатся значения, в этом столбце больше не будет значений,

awk '{ if ($2 == "") $2 = saved[(i++)%n]; else saved[n++] = $2 }; 1' file

Это считывает значения второго столбца в массив savedс индексом 0, содержащим первое значение и увеличивающим nкаждый раз. Когда во втором столбце заканчиваются значения, этот массив используется для циклического заполнения столбца, используя iв качестве счетчика и возвращая его значение обратно к нулю, кратному n, с помощью оператора модуля.

Тестирование:

$ cat file
A 1
B 2
C
D
E
$ awk '{ if ($2 == "") $2 = saved[(i++)%n]; else saved[n++] = $2 }; 1' file
A 1
B 2
C 1
D 2
E 1
$ cat otherfile
A apple
B bumblebee
C sunshine
D
E
F
G
H
$ awk '{ if ($2 == "") $2 = saved[(i++)%n]; else saved[n++] = $2 }; 1' otherfile
A apple
B bumblebee
C sunshine
D apple
E bumblebee
F sunshine
G apple
H bumblebee
1
27.08.2021, 09:14

Теги

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