Системные вызовы являются функциями, которые операционная система предусматривает приложения для использования. Принимая во внимание, что функции как те в math.h, string.h, и т.д. являются теми, который не имеет никакого отношения к взаимодействию через интерфейс с операционной системой.
Попробуйте что-то вроде этого:
join <(command1) <(command2) | cut -d ' ' -f 1,5,4
join
команда берет файлы, не команды, но с оболочкой, такие как удар, можно использовать показанную конструкцию для превращения вывода команды в виртуальный файл.
Вместо cut
можно также использовать awk
, если это - Ваша вещь.
Если Вы делаете это много, рассматриваете использование механизма реляционной базы данных.
Если Вы хотите 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
только будет верно для первого аргумента файла.
join
требуемые отсортированные файлы, и можно использовать-o
опция выбрать выходные поля:join <(command_1|sort) <(command_2|sort) -o 2.1,2.2,1.4
– glenn jackman 26.10.2011, 21:15