Использование sed для консолидации разностного вывода

У меня есть этот результат в результате сравнения файлов с diff :

 < IF-Name :STRING: "lns-wall-01-t2" Index:Gge32: 260 --- > IF-Name :STRING: "lns-wall-01-t2" Index:Gge32: 25 

Мне нужен этот вывод:

 lns-wall-01-t2 old:260 new:25 

Я хочу использовать sed.

3 Solutions collect form web for “Использование sed для консолидации разностного вывода”

С awk :

 awk ' /^</ { old = $NF } /^>/ { str = $4 ; gsub(/"/,"",str) ; printf "%s old:%s new:%s\n", str, old, $NF } ' your_files_list_here 
 sed ' /^</{ # first line formatting s/^.*"\(.*\)".*: /\1 old:/ # append next 2 lines N N # exchange from 2nd line begining till last ":" by "new" s/\n---.*: / new:/ }' "$Rep_Scripts"/diff.txt 

используйте другой тип выходного сигнала:

 diff -y --suppress-common-lines f1 f2 

который дает вам более удобный для пользователя формат:

 F-Name :STRING: "lns-wall-01-t2" Index:Gge32: 260 |IF-Name :STRING: "lns-wall-01-t2" Index:Gge32: 25 

а также

 diff -y ........ | perl -nE '/"(.*?)".*?32:\s*(\d+).*32:\s*(\d+)/ and say "$1 old:$2 new:$3"' 
  • Поиск файла для строки, окруженной двумя другими известными строками?
  • sed: захват и замена всех данных между последней обратной косой чертой и запятой
  • Лучше, чем `tee | разрезать | ... | paste`
  • Как свернуть 'grep -c <токен> * .h * .cpp' в один счет?
  • Удалить до первого вхождения, отредактировать эту строку и распечатать оставшиеся строки без изменений
  • Сценарий Bash для извлечения некоторой информации из HTML-страниц Ebay
  • Как извлечь первое целое из текстовой строки в столбце файла с разделителями табуляции?
  • Почему «while .. read .. << EOL» выполняет расширение переменной, но <файл и | не?
  • Извлечение уникальной части текста из файла с помощью awk, sed или grep
  • Как я могу упростить эту команду только для использования awk?
  • Как заменить этот шаблон на новую строку внутри?
  • Как выбрать последнее число в строке в сценарии bash
  • Linux и Unix - лучшая ОС в мире.