Назад | Перейти на главную страницу

ищу сложный лайнер, чтобы получить разницу вывода awk

Допустим, у меня есть два файла, как показано ниже:

file1

a 23
b 34
c 47

file2
a justin_beiber_sucks
b segmentation fault
c jackson
d nop

Теперь я хочу получить различие первого столбца двух файлов. Я делаю это сейчас как

$cat file1 awk '{print $1}'> f1
$cat file2 awk '{print $1}'> f2
$diff -u f1 f2

Но такой подход кажется отсталым. Есть какой-нибудь хитрый подход?

Проблема в том, что я всегда смотрю pipes как одномерная вещь, но здесь ее двумерная. Я имею в виду, что ввод в diff должен поступать одновременно из двух разных источников.

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

Пытаться:

diff -u <(awk '{print $1}' file-one) <(awk '{print $1}' file-two)

Скорее всего, что join буду делать то, что хочешь:

join <(sort file1) <(sort file2)

Но поскольку вы не говорите, чего на самом деле пытаетесь достичь, трудно определить, какие варианты могут быть уместными.