Конкатенация столбцов горизонтально. Печать только строк, которые пересекаются на 1-м столбце

Системные вызовы являются функциями, которые операционная система предусматривает приложения для использования. Принимая во внимание, что функции как те в math.h, string.h, и т.д. являются теми, который не имеет никакого отношения к взаимодействию через интерфейс с операционной системой.

3
26.10.2011, 20:09
2 ответа

Попробуйте что-то вроде этого:

join <(command1) <(command2) | cut -d ' ' -f 1,5,4

join команда берет файлы, не команды, но с оболочкой, такие как удар, можно использовать показанную конструкцию для превращения вывода команды в виртуальный файл.

Вместо cut можно также использовать awk, если это - Ваша вещь.

Если Вы делаете это много, рассматриваете использование механизма реляционной базы данных.

6
27.01.2020, 21:12
  • 1
    join требуемые отсортированные файлы, и можно использовать -o опция выбрать выходные поля: join <(command_1|sort) <(command_2|sort) -o 2.1,2.2,1.4 –  glenn jackman 26.10.2011, 21:15

Если Вы хотите awk, вот взятие:

awk '
  NR==FNR {cmd1[$1] = $NF; next}
  $1 in cmd1 {print $1, $2, cmd1[$1]}
' <(command_1) <(command_2)

FNR переменная awk является номером строки в текущем файле.
NR переменная является номером строки всех строк, замеченных до сих пор.
Таким образом, условие NR==FNR только будет верно для первого аргумента файла.

2
27.01.2020, 21:12

Теги

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