Как отобразить номера строк в рядом друг с другом в 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