2012-08-27 11 views
5

ファイルの途中の段落と1つの段落を含むファイルの間にdiffが見たいです。パイプがsedをdiffした

段落はファイルfoo60にあり、ファイルbarには可能な小さな違いがある段落のみが含まれています。

私はこの段落をsed、従ってsed -n 60,60p fooを使用して抽出できます。 diffでこれをどのように使用できますか?

sed -n 60,60p foo | diff bar # diff: missing operand after `foo` 
diff bar `sed -n 60,60p foo` # diff: extra operand `in` 

は私が行うことができます:

が動作しない

sed -n 60,60p foo >> tempfile; diff bar tempfile 

パイプを使用してどこかに一時的に保存するために私を必要としない解決策はありますか?

答えて

9

あなたが使用している場合は「 - 」をファイル引数として、diffは、標準入力から読み込みます:

sed -n 60,60p foo | diff bar - 
+3

「diff」だけでなく、疑似ファイル名 '-'は、GNU' coreutils'、Perl、(しばしば)Pythonを含む多くのコンテキストにおける標準入力を意味します。 – tripleee

7

あなたは、プロセス置換を使用することができます

diff bar <(sed -n 60,60p foo) 

これは、出力を比較するためにも使用することができます

diff <(sed -n 60,60p bar) <(sed -n 60,60p foo) 
+0

これはかなり便利です。 – 2cupsOfTech

+0

bashファイルで動作しないようですね。 –

+0

@thepickle:ここにいます – Thor

関連する問題