Дифференциальный унифицированный выход; подавить @@ линии?
При использовании 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
[править]: кто бы ни добавил команду comm, она на самом деле оказалась правильной. Я дам вам ответ, если вы отправите его обратно.
2 ответа
Решение
Это закончилось тем, что я решил:
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'
diff file1 file2 -U 0 | tail +3 | grep -v "^@@" > output.txt
Эта версия имеет то же самое diff
команда у вас есть, но первые две строки tail
(начиная с третьей строки) и выводит только те строки, которые не имеют "@@" в начале.