次を含むファイルをgrepした場合:
These are words
These are words
These are words
These are words
... Word These
の場合、文字列These are words
を4回出力します。
grepが繰り返し文字列を複数回印刷するのを防ぐにはどうすればよいですか?それ以外の場合、grepの出力を操作して重複行を削除するにはどうすればよいですか?
Unixの哲学は、1つのことを実行し、それらを適切に実行するツールを持つことです。この場合、grep
は、ファイルからテキストを選択するツールです。重複があるかどうかを調べるために、テキストをソートします。重複を削除するには、sort
に-u
オプションを使用します。副<文>この[前述の事実の]結果として、それ故に、従って、だから◆【同】consequently; therefore <文>このような方法で、このようにして、こんなふうに、上に述べたように◆【同】in this manner <文>そのような程度まで<文> AひいてはB◆【用法】A and thus B <文>例えば◆【同】for example; as an example:
grep These filename | sort -u
sort
には多くのオプションがあります。man sort
を参照してください。重複をカウントする場合、または重複の有無を判断するためのより複雑なスキームを使用する場合は、ソート出力をuniq
:grep These filename | sort | uniq
にパイプして、オプションについてman
uniq`を参照してください。
単一の文字列のみを探している場合は、grep
と追加のスイッチを使用します
grep -m1 'These' filename
man grep
から
-m NUM, --max-count=NUM
Stop reading a file after NUM matching lines. If the input is
standard input from a regular file, and NUM matching lines are
output, grep ensures that the standard input is positioned to
just after the last matching line before exiting, regardless
of the presence of trailing context lines. This enables a calling
process to resume a search. When grep stops after NUM matching
lines, it outputs any trailing context lines. When the -c or
--count option is also used, grep does not output a count greater
than NUM. When the -v or --invert-match option is also used, grep
stops after outputting NUM non-matching lines.
またはawk
を使用して;)
awk '/These/ {print; exit}' foo