повторяющиеся строки в полях

Is there a more elegant way to do this?

Да, конечно есть. Просто дважды запустите Awk для одного и того же файла (, как указано в заголовке ).

awk -F, '$3=="win"{won[$2]} FNR==NR{next} $2 in won' log.csv log.csv
-1
07.09.2020, 20:02
2 ответа
awk '
    NR==FNR { a[++c,1]=$(NF-1); a[c,2]=$NF; next }
    NF>2 { for (i=1; i<=c; i++) print $1, $2, a[i,1], a[i,2] }
' file file
4123 4179 3275 3317
4123 4179 3331 3373
4123 4179 3387 3429
4123 4179 3443 3485
4123 4179 3499 3541
4123 4179 3555 3597
4137 4193 3275 3317
4137 4193 3331 3373
4137 4193 3387 3429
4137 4193 3443 3485
4137 4193 3499 3541
4137 4193 3555 3597
4151 4207 3275 3317
4151 4207 3331 3373
4151 4207 3387 3429
4151 4207 3443 3485
4151 4207 3499 3541
4151 4207 3555 3597
1
18.03.2021, 23:06
#! /bin/bash
# generate last two fields file 
# generate first two fields file
# get the number of lines of input

n=$(< file sed -Ene '
  s/\s+/ /g;s/^ | $//g
  s/ /\n/2
  h;s/.*\n//;w f34
  g;s/\n.*//w f12
  $=
')

while IFS= read -r l <&3; do
  yes "$l" | paste -d" " - f34 | head -n "$n" 
done 3< f12

Результаты

4123 4179 3275 3317
4123 4179 3331 3373
4123 4179 3387 3429
4123 4179 3443 3485
4123 4179 3499 3541
4123 4179 3555 3597
4137 4193 3275 3317
4137 4193 3331 3373
4137 4193 3387 3429
4137 4193 3443 3485
4137 4193 3499 3541
4137 4193 3555 3597
4151 4207 3275 3317
4151 4207 3331 3373
4151 4207 3387 3429
4151 4207 3443 3485
4151 4207 3499 3541
4151 4207 3555 3597
0
18.03.2021, 23:06

Теги

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