Как отобразить номера строк в рядом друг с другом в Unix?

Сценарий состоит в том, что у меня есть 2 файла, которые я хочу разнести рядом, используя следующую команду с номерами строк:

diff -y file1.txt file2.txt

а также

sdiff file1.txt file2.txt

Приведенная выше команда просто печатает бок о бок diff, но не отображает номера строк. Есть ли способ сделать это? Я много искал, но не мог найти решения. Я не могу использовать сторонние инструменты К вашему сведению. Любые гениальные идеи от кого-либо?

Обновить:

Я хочу, чтобы в нем присутствовали номера файлов самого файла, а не номера строк, сгенерированные по конвейеру в cat -n и т. Д. Допустим, я делаю diff, используя "--suppress-common-l‌ ines", тогда номера строк должны быть опущены, которые не показаны в diff.

4 ответа

Решение

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

sdiff -l file1 file2 | cat -n | grep -v -e '($'  

Ниже код будет отображать общие поля также вместе с номерами строк в выводе.

diff -y file1 file2 | cat -n | grep -v -e '($'  

Вы также можете посетить https://unix.stackexchange.com/questions/34874/diff-output-line-numbers для другого формата.

Следующая команда отобразит параллельный вывод с номерами строк для file1.txt и удалением идентичных строк.

sdiff -l file1.txt file2.txt | cat -n | grep -v -e '($'
sdiff -s <(cat -n file1.txt) <(cat -n file2.txt)

Это дает вам параллельный вывод с номерами строк из исходных файлов.

Есть также эта аккуратная командная труба:

diff -y <file1> <file2> ... | less -N

Это даст вам less экземпляр с рядом расположенным файлом diff и нумерацией строк в начале каждой строки.

У меня была та же проблема, и в конечном итоге я использовал графический инструмент (диффузный) под Fedora 28

Другие вопросы по тегам