grepを使用して単語以外の文字で始まる単語を検索する

grepを使用して単語以外の文字で始まる単語を検索する

test.txt ファイルの内容は次のとおりです。

ls -a
cmake --verbose
verbose

grepこのファイルを見て、「--」で始まる単語(例:「--verbose」)だけを探したいと思います。

ただし、次のパターンをパラメータとして使用すると機能grepしません。

$ cat testing.txt | grep -- 
Usage: grep [OPTION]... PATTERN
   [FILE]... Try 'grep --help' for more information.

$ cat testing.txt | grep -
ls -a
cmake --verbose

$ cat testing.txt | grep '--v'
grep (GNU grep) 3.1
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.

$ cat testing.txt | grep ver
cmake --verbose
verbose

$ cat testing.txt | grep '-ver'
ls -a
  • grepaで始まるすべてのパラメータが--オプションだと思いますか? grepが「--」で始まるパターン(ファイルから)を取得できるようにするには、この問題を回避するにはどうすればよいですか?
  • 最後の試みは「-ver」パターンを使用して行われたため、grepそのパターンはオプションとは見なされませんでしたが、grep「-ver」パターンが含まれているにもかかわらず、ファイルの「--verbose」単語と一致しませんでした。この動作の原因は何ですか?

ベストアンサー1

この文字列は、--コマンドラインに表示されるときにほとんどのユーティリティに特別です。それは信号を送るオプション終了コマンドライン引数パーサーに。たとえば、現在のディレクトリから呼び出されたファイルをrm -- -f削除するためにダッシュで始まるファイル名を渡したい場合に使用されます。-f

--パターンとして使用するには、ユーティリティにパターンであることをgrep明示的に教えてください。

grep -e --

オプションは、検索したいパターンである-eオプション引数を受け入れます。grepgrep

また、使用することができます

grep -- --

ここでgrep2つ目は、最初のものがオプションになることができない--としてモードと呼ばれていました。--


ls -aファイルの行にが含まれていないため、最後のパイプが返されますr。このコマンドは、「()と一致しないすべての行抽出」grep -verで作成することもできます。grep -v -e r-vr-e r

おすすめ記事