Выведите NUM (по умолчанию 2) строк единого контекста - что это значит?

У меня есть следующая команда:

diff -u filea fileb | grep '^-' | sed 's/^-//' > diff.txt

Это прекрасно работает; он выводит список различий по каждой строке в текстовый файл, а затем удаляет каждый экземпляр '-' для каждой строки, однако я действительно хочу понять, что делает -u и что означает следующее:

Output NUM (default 2) lines of unified context

Правильно ли я считаю, что унифицированным является только отображение различий, а не контекст различий?

Кроме того, есть ли какие-то потенциальные ошибки, о которых мне следует беспокоиться в связи с моим требованием отображать различия между двумя файлами в другом файле с помощью приведенной выше команды?

1 ответ

Это означает количество "строк контекста" вокруг каждой разницы, которую он находит.

Вероятно, лучше всего продемонстрировать на примере:

$ diff -U 1 hello.txt hello2.txt
--- hello.txt   2015-01-24 16:10:45.000000000 +0100
+++ hello2.txt  2015-01-24 16:11:14.000000000 +0100
@@ -4,3 +4,3 @@
 Hello World.
-Hello World.
+Yo World.
 Hello World.

$ diff -U 2 hello.txt hello2.txt
--- hello.txt   2015-01-24 16:10:45.000000000 +0100
+++ hello2.txt  2015-01-24 16:11:14.000000000 +0100
@@ -3,5 +3,5 @@
 Hello World.
 Hello World.
-Hello World.
+Yo World.
 Hello World.
 Hello World.

$ diff -U 3 hello.txt hello2.txt
--- hello.txt   2015-01-24 16:10:45.000000000 +0100
+++ hello2.txt  2015-01-24 16:11:14.000000000 +0100
@@ -2,7 +2,7 @@
 Hello World.
 Hello World.
 Hello World.
-Hello World.
+Yo World.
 Hello World.
 Hello World.
 Hello World.
Другие вопросы по тегам