Unix diff для печати только соответствующих diff - PullRequest
1 голос
/ 01 мая 2010

У меня есть эти два файла

Файл: 11

11
456123

Файл: 22

11
789

Выход diff 11 22

2c2
< 456123
---
> 789

Выход будет

< 456123
> 789

Я хочу, чтобы он не печатал строки 2c2 и ---. Я посмотрел на справочную страницу, но не смог найти никакой помощи. Есть идеи? Файл содержит более 1000 строк.

Ответы [ 2 ]

5 голосов
/ 01 мая 2010

А как же diff 11 22 | grep "^[<|>]"?

Обновление : Как указал Книтти, правильный шаблон - ^[<>]

2 голосов
/ 01 мая 2010

Diff имеет целый ряд полезных опций, таких как --old-group-format, которые очень кратко описаны в справке. Они раскрыты в http://www.network -theory.co.uk / docs / diff / Line_Group_Formats.html

Следующее производит нечто похожее на то, что вы хотите.

    diff 11.txt 22.txt --unchanged-group-format=""  --changed-group-format="<%<>%>"

    <456123
    >789

Вам также может понадобиться поиграть с --old-group-format=format (групповые блоки, содержащие только строки из первого файла) --new-group-format=format --old-line-format=format (форматирует строки только из первого файла) и --new-line-format=format и т. Д.

Отказ от ответственности - я не использовал это по-настоящему раньше, на самом деле, я только что понял их. Если у вас есть дополнительные вопросы, я с удовольствием рассмотрю их позже.

Отредактировано для изменения порядка строк

...