web-dev-qa-db-ja.com

Unixで行番号を横並びで表示するにはどうすればよいですか?

シナリオは、次のコマンドを行番号とともに使用して、並べて比較する2つのファイルがあることです。

diff -y file1.txt file2.txt

そして

sdiff file1.txt file2.txt

上記のコマンドは、単にdiffを並べて出力しますが、行番号は表示しません。それを行う方法はありますか?よく検索しましたが、解決策が見つかりませんでした。参考までに、サードパーティ製のツールは使用できません。 誰からの天才的なアイデア?

更新:

cat -nなどへのパイピングによって生成された行番号ではなく、ファイル自体のファイル番号が必要です。たとえば、 "-suppress-common-l‌を使用してdiffを実行していますines」の場合、diffに表示されていない行番号は省略してください。

20
nomazoma49

以下のコードを使用して、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 にアクセスすることもできます。

11
Utsav

このきちんとしたコマンドパイプもあります。

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

これにより、lessインスタンスが提供され、各ファイルの差分と各行の先頭に行番号が付けられます。

2
Ezbob

次のコマンドは、file1.txtの行番号が先頭に追加され、同じ行が削除されたサイドバイサイド出力を表示します。

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

これにより、sourceファイルからの行番号を並べて出力できます。

1
Mike Titus

私は同じ問題を抱えていて、Fedora 28でグラフィカルツール(拡散)を使用することになりました

0
user11425287