Заставьте команду `diff` искать только отличия от указанного диапазона строк
Есть ли способ сделать diff
Команда искать только различия из указанного диапазона строк (от строки к строке), а не весь файл? Я испытываю затруднения, пытаясь найти разницу между двумя функциями JavaScript в двух файлах, которые не находятся в одной строке. Я мог бы скопировать диапазон строк в новый файл, сделать то же самое для другого файла, а затем сравнить их, но это было бы утомительно, особенно если в файлах много текста.
Я пытался с помощью:
diff "code1.js" "code2.js" --suppress-common-lines | tee outputFile
но это, очевидно, не показывает только диапазон линий, которые мне интересно сравнивать. Было бы также полезно, если бы я мог указать диапазон строк для поиска в одном файле и другой диапазон строк в другом файле.
1 ответ
diff <(sed -n 'S1,S2p' file1) <(sed -n 'S3,S4p' file2)
где
- S1 - начальная строка file1.
- S2 - конец строки file1.
- S3 - начальная строка file2.
- S4 - это конец строки file2.
Пропуск строки 1-4:
diff <(sed -n '5,10p' file1) <(sed -n '5,10p' file2)
$ more file1
1
2
3
4
5
6
7
8
9
10
$ more file2
11
2
3
4
5
65
7
8
9
10
Результат
2c2
< 6
---
> 65
-> он пропустил различие в строке 1.
Для этого может быть проще использовать инструмент для рабочего стола. Мелд отлично (тема на AU: /questions/115849/kakie-horoshie-graficheskie-prilozheniya-dlya-razlichij-i-sliyaniya-dostupnyi-dl/115861#115861):
Meld - это инструмент визуального сравнения и слияния, предназначенный для разработчиков. Meld поможет вам сравнить файлы, каталоги и проекты с управлением версиями. Он обеспечивает двух- и трехстороннее сравнение файлов и каталогов, а также поддерживает многие популярные системы контроля версий.