は私が B.TXTどの行別のファイルに不足しているLinuxボックス 上
1
2
3
6
以下のよう
A.TXT
1
2
3
4
セカンドファイル以下のように一つのファイルを持っているどのように見つけますか
A.txt内にあるものは知りたいが、B.txtではなく であることを知りたい。すなわち、値4を印刷する必要がある
私はLinuxでそれをしたいと思います。 diffを使用して
は私が B.TXTどの行別のファイルに不足しているLinuxボックス 上
1
2
3
6
以下のよう
A.TXT
1
2
3
4
セカンドファイル以下のように一つのファイルを持っているどのように見つけますか
A.txt内にあるものは知りたいが、B.txtではなく であることを知りたい。すなわち、値4を印刷する必要がある
私はLinuxでそれをしたいと思います。 diffを使用して
awk 'NR==FNR{a[$0]=1;next}!a[$0]' B A
ファイルはあなたのサンプル入力としてソートされている場合
ありがとう、それは私のために働く。 – user3190479
[なぜ動作するの説明](https://stackoverflow.com/a/32488079/213816) – nonsleepr
使用COMMを試してみてくださいそれを与える、テストしていないを示しています。
$ comm -23 A.txt B.txt
4
ファイルがソートされていない場合は、@ Kentのawkソリューションを参照してください。あなたはまた、-v
(非一致した行を表示)、-x
(行全体が一致)と-f
を組み合わせることで、この使用はgrepを行うことができます
これは非常にうまく動作します。 – user3190479
ありがとう!これはまさに私たちが望むものです! – Wang
これは実際の回答としてマークする必要があると思います! – Wang
(ファイルからパターンを読む)オプション:
これは依存しません。ファイルの順番に - それはB.
素晴らしい!魅力のように動作し、行をソートする必要はありません。ありがとう。 –
(@のrjmunroの回答に加えて)
に行を一致させることから、任意の行を削除します。このためgrep
を使用する適切な方法は次のとおりです。 -F
フラグなし
$ grep -F -v -x -f B.txt A.txt
4
、grep
はここに望ましくない基本的な正規表現(BRE)、として、B.txt
から読んで、パターンを解釈し、トラブルを引き起こす可能性があります。 -F
フラグを指定すると、grep
は改行で区切られた文字列としてPATTERNを扱います。たとえば:
$ cat A.txt
&
^
[
]
$ cat B.txt
[
^
]
|
$ grep -v -x -f B.txt A.txt
grep: B.txt:1: Invalid regular expression
$ grep -F -v -x -f B.txt A.txt
&
これが「不明瞭」と考えられた理由がわかりません - 「comm」は、あなたが探しているコマンドです。この特定の場合、 'comm -23 A.txt B.txt'。 – twalberg
私は同意します。完全にはっきりと見え、サンプル入力と予想される出力があります。なぜ人々がそれを閉じようとしているのか想像できない。 –
「不明」は「努力していない」ということがないために使用されているようです。 – showdev