grep -Fxvf file1.txt file2.txt

Это показывает мне разницу между двумя файлами, а именно:

Name A
Name B
Name C

Но я хочу, чтобы он показывал мне "+" перед каждой строкой. Вот так: (я не хочу редактировать файлы, только вывод)

+Name A
+Name B
+Name C

Как я могу добавить "+" перед каждой строкой?

-1
Matthias Pfrendl 18 Окт 2021 в 16:20
1
Добро пожаловать, вы пробовали что-то до сих пор? grep не добавляет дополнительный контент к выходным данным, а просто извлекает то, что находится на входе. Содержит ли ввод + знаков? Если да, не могли бы вы отредактировать вопрос, добавив соответствующие образцы данных?
 – 
schrodigerscatcuriosity
18 Окт 2021 в 16:16
Если вы ищете различия между двумя файлами (которые, кстати, ваша команда grep на самом деле не дает вам — она просто дает вам строки, которые есть в файле2.txt, которых нет в файле1.txt, который не то же самое), вы, вероятно, захотите прочитать справочные страницы для comm и diff (особенно см. параметр -u diff - например, попробуйте diff -u File1 File2 | grep '^+[^+]')
 – 
cas
18 Окт 2021 в 17:09

1 ответ

Интересно, это то, что вы ищете:

grep -Fxvf file1.txt file2.txt | sed 's/^/+/'

Я перенаправляю конвейер, т. е. вывод grep, в другую программу, т. е. sed, которая используется для s замены начала каждой строки, т. е. ^, на символ +, который вы ищете.

Если вы хотите перенаправить окончательный вывод в файл, т.е. экспортировать вывод, то это то, что вы можете сделать:

grep -Fxvf file1.txt file2.txt | sed 's/^/+/' > export.txt

Кроме того, если вам нужно найти различия между двумя файлами, вы можете поискать специально разработанную утилиту, которой является diff. Найдите некоторую информацию здесь.

4
Philippos 18 Окт 2021 в 17:21