1

При использовании diff, есть ли способ подавить первые две строки (перечисляя имена файлов и время) и все строки, начинающиеся с @@ в выводе? Все, что я хочу, это строки, которые показывают, что удалить и что добавить.

Вот команда, которую я имею в настоящее время:

diff file1 file2 -U 0 > output.txt

Пример вывода того, что я получаю в файле output.txt с помощью этой команды:

--- file1   2010-11-25 01:56:58.856462432 -0500
+++ file2   2010-11-25 01:57:20.100626348 -0500
@@ -145,2 +145 @@
-VI2
-US3
+VI4
@@ -168,2 +167,2 @@
-56VI
-56PR
+57VI
+57PR

[edit]: кто бы ни добавил команду comm, на самом деле она оказалась правильной. Я дам вам ответ, если вы отправите его обратно.

2 ответа2

2
diff file1 file2 -U 0 | tail +3 | grep -v "^@@" > output.txt

Эта версия имеет ту же команду diff что и у вас, но обрезает первые две строки tail (начиная с третьей строки) и выводит только строки, не имеющие «@@» в начале.

0

Это закончилось тем, что я решил:

comm -1 -3 --nocheck-order 'path/file.csv' 'path/file2.csv' > 'path/added.txt'
comm -2 -3 --nocheck-order 'path/file.csv' 'path/file2.csv' > 'path/removed.txt'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .