21

と同等のUNIXコマンドはありますか

sort | uniq

文字列セットの交差または「外れ値」を検索します。

アプリケーションの例:htmlテンプレートのリストがあります。中には{%load i18n%}文字列が含まれているものと、含まれていないものがあります。どのファイルがそうでないか知りたいです。

編集: grep-Lは上記の問題を解決します。

これはどう:

file1:

mom
dad
bob

file2:

dad

%intersect file1 file2

dad

%left-unique file1 file2

mom
bob
4

6 に答える 6

39

grep -Lポスターの実際の問題は解決しているように見えますが、実際に尋ねられた質問では、2セットの文字列の共通部分を見つけて、「comm」コマンドを調べることをお勧めします。たとえば、file1それぞれfile2に並べ替えられた単語のリストが含まれている場合、1行に1単語、

$ comm -12 file1 file2

両方のファイルに共通の単語を生成します。より一般的には、ソートされた入力ファイルfile1file2、コマンド

$ comm file1 file2

3列の出力を生成します

  1. file1の行のみ
  2. file2の行のみ
  3. file1とfile2の両方の行

Nオプションを使用して、出力の列を非表示にすることができ-Nます。したがって、上記のコマンドはcomm -12 file1 file2、列1と2を抑制し、両方のファイルに共通する単語のみを残します。

于 2009-06-19T05:07:15.813 に答える
9

交差:

# sort file1 file2 | uniq -d
dad

左一意:

# sort file1 file2 | uniq -u
bob
mom
于 2009-06-19T04:27:17.017 に答える
7

http://www.commandlinefu.com/commands/view/5710/intersection-between-two-filesから:

2 つの (ソートされていない) ファイルの交差:

grep -Fx -f file1 file2

file1 にない file2 の行:

grep -Fxv -f file1 file2

説明:

  • この-fオプションは、検索するパターンをファイルから読み取るように grep に指示します。これは、file1 の各行に対して file2 の検索を実行することを意味します。
  • このオプションは、検索語をパターンとしてではなく-F固定文字列として表示するように grep に指示します。a.ca.cabc
  • この-xオプションは、file1 の「foo」が file2 の「foobar」と一致しないように、grep に行全体の検索を行うように指示します。
  • デフォルトでは、grep は一致する行のみを表示し、交点を示します。このオプションは、一致-vしない行のみを表示するように grep に指示し、file2 に固有の行を表示します。
于 2012-08-20T05:13:59.567 に答える
5

質問を誤解しているかもしれませんが、grepを使用して文字列を検索しないのはなぜですか(-Lオプションを使用して、文字列が含まれていないファイルの名前を出力させます)。

言い換えると

grep -L "{% load i18n %}" file1 file2 file3 ... etc

または、必要に応じてファイル名にワイルドカードを使用します。

于 2009-06-19T03:40:15.587 に答える
2

男からgrep

-L, --files-without-match

通常の出力を抑制します。代わりに、通常は出力が出力されない各入力ファイルの名前を出力します。スキャンは最初の一致で停止します。

したがって、テンプレートが必要な.htmlファイルの場合:

grep -L '{% load i18n %}' *.html
于 2009-06-19T03:46:57.973 に答える
2

交差点:

comm -12 <(cat file1 | sort | uniq) <(cat file2 | sort | uniq)

全行 3 列 (ファイル 1 | ファイル 2 | 交差点):

comm <(cat file1 | sort | uniq) <(cat file2 | sort | uniq)

ファイルがソートされていない場合、および/またはファイルの1つに重複しているが他のファイルには表示されない行がある場合-この1行のコマンドはファイルをソートし、重複した行を削除します希望する結果を直接得る。

于 2018-05-22T12:34:20.947 に答える