シナリオは、次のコマンドを行番号とともに使用して、並べて比較する2つのファイルがあることです。
diff -y file1.txt file2.txt
そして
sdiff file1.txt file2.txt
上記のコマンドは、単にdiffを並べて出力しますが、行番号は表示しません。それを行う方法はありますか?よく検索しましたが、解決策が見つかりませんでした。参考までに、サードパーティ製のツールは使用できません。 誰からの天才的なアイデア?
更新:
cat -nなどへのパイピングによって生成された行番号ではなく、ファイル自体のファイル番号が必要です。たとえば、 "-suppress-common-lを使用してdiffを実行していますines」の場合、diffに表示されていない行番号は省略してください。
以下のコードを使用して、2つのファイルの一般的でないフィールドを並べて表示できます。
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 にアクセスすることもできます。
このきちんとしたコマンドパイプもあります。
diff -y <file1> <file2> ... | less -N
これにより、less
インスタンスが提供され、各ファイルの差分と各行の先頭に行番号が付けられます。
次のコマンドは、file1.txtの行番号が先頭に追加され、同じ行が削除されたサイドバイサイド出力を表示します。
sdiff -l file1.txt file2.txt | cat -n | grep -v -e '($'
sdiff -s <(cat -n file1.txt) <(cat -n file2.txt)
これにより、sourceファイルからの行番号を並べて出力できます。
私は同じ問題を抱えていて、Fedora 28でグラフィカルツール(拡散)を使用することになりました