Я хочу сравнить два разных текста. Пожалуйста, проверьте ниже детали и что мне нужно

1-й текстовый контент:

111 xx1
222
333
555

2-й текстовый контент:

333
111 xxx
222
888

Мои вопросы

Я ищу одну команду, которая может напечатать следующие результаты:

«Обновление:111 ххх»

"Удалить:555"

"Добавить:888"

Наиболее важным является то, что в нем должны отображаться заголовки "обновить", "удалить", "добавить".

2 ответа2

0

Вы могли бы использовать diff для этого. Надо просто привыкнуть к его выходному формату. Существует удобный путеводитель здесь. Для чего - то с GUI есть MELD.

0

ты ищешь

diff <(sort file1) <(sort file2)

который даст

1c1
< 111XZ
---
> 111 xxx
3a4
> 888

с «<» для данных в файле 1 и «>» для данных в файле 2.

Обратите внимание на выходе, это псевдо - ed обозначение.

  • c означает изменить строку
  • средство добавления
  • a означает удалить (не в примере выше)

ты можешь сделать

diff <(sort file1) <(sort file2) |
awk '$1 == "<" {$1=" in file1 } $1== ">" { $1="in file2" } { print } '

(только в конце строки после |)

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