ファイル全体ではなく、2つのファイルの最初の行のみを比較したい。どうすればいいですか?最初の行のソリューションだけが必要ですが、行数を指定できれば、はるかに良い答えになります。
したがって、diffは次の2つのファイル間の違いを返しません。
a
1
2
そして:
a
3
4
どうぞ:
diff <(head -n 1 file1) <(head -n 1 file2)
(これは何も返さないでしょう)。
diff <(head -n 2 file1) <(head -n 2 file2)
Returns:
2c2
< 1
---
> 3
これをスクリプトに組み込んで、言及したことを行うことができます。
#!/bin/bash
fileOne=${1}
fileTwo=${2}
numLines=${3:-"1"}
diff <(head -n ${numLines} ${fileOne}) <(head -n ${numLines} ${fileTwo})
これを使用するには、chmod +x nameofscript.sh
でスクリプトを実行可能にしてから、./nameofscript.sh ~/file1 ~/Docs/file2
を実行します。そのコマンドの最後にさらに番号を追加する場合は、デフォルトの行数を1のままにします。
(または、スクリプトで-f1 file1 -f2 file2 -n 1を使用してスイッチを切り替えることもできますが、そのためのケースステートメントを頭の中で思い出せません)。
head
は、-n
によって提案された行数を最初から返します。逆にしたい場合、それはtail -n ${numLines}
になります(末尾から行数が戻ります)。
2016年5月10日を編集:
これはBash(および互換シェル)に固有です。これを他のものから使用する必要がある場合:
bash -c 'diff <(...) <(...)'