8
cat a.txt | grep -ri '->'

テキスト矢印で行をgrepしたい->。しかし、Linux シェル -では、オプションの開始を意味し、出力をファイルにパイプすること
を 意味します。>

上記のコマンドを実行した後、エラーが発生しました

[root@rs169 document_root]# cat a.txt | grep -ri '->'
grep: invalid option -- '>'
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.

誰かがそれを正しく行う方法を教えてもらえますか?

4

5 に答える 5

10

これを行う別の方法は、次を使用することです。これは--、フラグの使用が終了したことを grep に伝えます-。これ以降に表示されるものは、文字どおりに解釈されます。

$ echo "->" | grep -- "->"
->
于 2013-08-08T09:39:07.487 に答える
4

grep -ri '\->' a.txt すべき

[A]$ grep -ri '\->'  a.txt
12 ->2
[A]$ cat a.txt
12 ->2
11

[A]$ sh -version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2009 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.
于 2013-08-08T09:36:11.713 に答える
4

key を使用-eして、パターンを明示的に記述します。grep -rie '->'

 -e PATTERN, --regexp=PATTERN
          Use PATTERN as the pattern.  This can be used to specify multiple search patterns, or to protect a pattern beginning with a hyphen (-).  (-e is specified by POSIX.)
于 2013-08-08T09:50:30.303 に答える
2

パターンでエスケープすることはできますが-、それが機能しない理由は次のとおりです: (パターンの一部) がそれに渡されたオプションであるgrepと考えるように導かれます。オプションがないため、文句を言います。>->grep>

正しい方法は、以下を追加して、grep にオプションの期待をやめるように指示すること--です。

cat a.txt | grep -ri -- '->'
于 2013-08-08T09:40:07.460 に答える
2

Linux コマンド シェルでは、- Like thisをエスケープします。

cat a.txt | grep -ri '\->'

ところで、なぜ-riオプションが必要なのですか? ->アルファベットがなく(-i大文字と小文字を区別しない検索用です)、 cat a.txt は、検索する必要がある再帰的なファイル/パイプのリストを生成しません

于 2013-08-08T09:37:41.630 に答える