Оболочка расширяется */*[myPattern]
и затем grep
интерпретирует первое слово расширения как шаблон и остальные как имена файлов (кроме того, если любые из имен файлов, оказывается, не похожи grep
опции команды). Это - в значительной степени тот же способ, которым это работает в каждой общей оболочке.
Я бы использовал diff или sdiff, потому что мне кажется, что это менее взломанное решение, и при необходимости проделал бы некоторые манипуляции с выводом с помощью awk или подобного инструмента.
➜ ~ sdiff 1.txt 2.txt
1023M BLD | 1.2G BLD
123G DEV 123G DEV
945K Deployment | 345M Deployment
4899 INT | 499M INT
Затем вы можете увидеть значения, которые отличаются после символа вертикальной черты.
Отложите это только для них, как в ответе выше:
➜ ~ sdiff 1.txt 2.txt | grep '|'
1023M BLD | 1.2G BLD
945K Deployment | 345M Deployment
4899 INT | 499M INT
Я лично считаю, что это более плавное решение. Для перенаправления просто выполните:
➜ ~ sdiff 1.txt 2.txt | grep '|' > 3.txt
Вы также можете использовать diff и grep, чтобы получить только поля, которые отличаются от первой строки:
➜ ~ diff 1.txt 2.txt | grep "^>"
> 1.2G BLD
> 345M Deployment
> 499M INT
С файлами-примерами ниже команда выдаст нужный результат
$ paste file1 file2 | awk '$1!=$3'
Вывод-пример будет таким же, как ниже
1023M BLD 1.2G BLD
945K Deployment 345M Deployment
4899 INT 499M INT
используйте перенаправление в файл для записи в file3.