Сгруппировать несколько столбцов

You are logging in to localhost with ssh. This is usually not necessary and may carry some overhead. Try

su -

in a terminal and enter the password.

1
01.04.2018, 13:57
2 ответа

С башмаком:

#!/bin/bash

for c in 0 1; do
  while read -r -a columns; do
    for((i=$c; i<${#columns[@]}; i+=2)); do
      echo -n "${columns[$i]} "
    done
    echo
  done < file
done

Выход:

1 3 
1 3 
1 3 
2 4 
2 4 
2 4 
1
27.01.2020, 23:43

Вот довольно загадочный awk:

awk '{for (i=1; i<=NF; i+=2) {printf "%s ", $(i + (NR > FNR))}; print ""}' file file

При первой обработке файла NR > FNRбудет равно false или 0.
При второй обработке файла NR > FNRбудет истинным или 1.


Для этого требуется один проход по файлу, но вы должны держать половину файла в памяти:

awk '
    {
        for (i=1; i<NF; i+=2) {
            printf "%s ", $i
            row[NR] = row[NR] $(i+1) " "
        }
        print ""
    }
    END {
        for (i=1; i<=NR; i++) print row[i]
    }
' file
0
27.01.2020, 23:43

Теги

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