Linux сортирует и вырезает несколько столбцов

Похоже, вам может потребоваться переустановить -Ubuntu на этом компьютере. Сообщение, показанное на снимке экрана, представляет собой панику ядра и означает, что у Ubuntu возникли проблемы с оборудованием. Скорее всего, где-то неправильная конфигурация, которую должна исправить новая установка.

2
13.11.2021, 03:20
2 ответа

Поскольку результат состоит из двух отдельно отсортированных столбцов данных, необходимо выполнить два вызова sort, каждый с отдельным набором данных.

Ответ пользователя nezabudka показывает, как это можно сделать в оболочке, которая понимает подстановки процессов:

paste -d : \
    <( cut -d : -f 3 info | sort ) \
    <( cut -d : -f 5 info | sort ) \
    >outfile

Вышеприведенное предполагает, что вы хотите сохранить вывод в файл с именем outfile.

В оболочке, которая не понимает замены процессов (вы не упомянули конкретную оболочку в вопросе ), это можно сделать в два этапа, используя промежуточный файл:

cut -d : -f 3 info | sort > outfile.tmp
cut -d : -f 5 info | sort | paste -d : outfile.tmp - >outfile
rm outfile.tmp

Первый конвейер создает начальный столбец отсортированных имен планет. Он перенаправляет отсортированные данные в файл outfile.tmp. Второй конвейер создает второй столбец аналогично первому и добавляет его к первому с помощью paste. Затем мы удаляем промежуточный файл.

0
13.11.2021, 10:28

Используя и его встроенную функцию сортировки массивов, нам нужен только один проход по файлу.

gawk '
  BEGIN { FS = OFS = ":" }
  {
    planet[NR] = $3
    name[NR] = $5
  }
  END {
    asort(planet)
    asort(name)
    for (i=1; i <= NR; i++) print planet[i], name[i]
  }
' info
0
13.11.2021, 15:44

Теги

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