2

こんにちは、単語の終わりに到達したら、検索を停止したいと思います。

例えば:

ls -al | grep adh

それが私の検索です...「h」の後に停止したい

検索しているディレクトリには の 2 つのインスタンスadhadh2ありadhます。adhadh2

これが理にかなっていることを願っています。質問があればお尋ねください:)

参考までに、私は Linux/perl の初心者です。

4

6 に答える 6

4

$行末に を使用します。

ls -al | grep " adh$"

それを作るべきです。

テスト

$ touch faaa
$ touch faaa2
$ touch faaa3
$ touch afaaa

$ ls -al | grep faaa
-rw-rw-r-- 1 me me    0 Jul 25 14:24 afaaa
-rw-rw-r-- 1 me me    0 Jul 25 14:24 faaa
-rw-rw-r-- 1 me me    0 Jul 25 14:24 faaa2
-rw-rw-r-- 1 me me    0 Jul 25 14:24 faaa3

$ ls -al | grep faaa$
-rw-rw-r-- 1 me me    0 Jul 25 14:24 afaaa
-rw-rw-r-- 1 me me    0 Jul 25 14:24 faaa

$ ls -al | grep " faaa$"
-rw-rw-r-- 1 me me    0 Jul 25 14:24 faaa
于 2013-07-25T12:24:12.833 に答える
1

一般に、あなたの の後に許可されるものを指定する必要がありますadh

あなたの言葉が行末にある場合、Fedorquiの答えは大丈夫です。

adh$

mean -adh行末と一致します。

これは、スペースで区切られた単語には機能しません。

adh something
adh2 another

同様の場合、次のように書く必要があります。

grep 'adh '

一致adhおよび<space>または

grep `adh[^a-z0-9A-Z]`

一致adhし、文字と数字以外のもの、または使用できますperl regex

grep -P `adh\b`

の最後はadh単語境界にする必要があります

など...おそらく、より熟練した正規表現の専門家は、より多くの可能性を提案します..

于 2013-07-25T12:41:40.293 に答える
0

一般に:

command that generates output | grep pattern | head -1

コマンドによって出力された行のパターンの最初の出現を示します。お気に入り:

ls -l | grep " adh$" | head -1
于 2013-07-25T12:27:33.953 に答える
0

grepこれには-wオプションがあります:

        -w, --word-regexp
           Select  only  those  lines  containing  matches  that form whole
           words.  The test is that the matching substring must  either  be
           at  the  beginning  of  the  line,  or  preceded  by  a non-word
           constituent character.  Similarly, it must be either at the  end
           of  the  line  or  followed by a non-word constituent character.
           Word-constituent  characters  are  letters,  digits,   and   the
           underscore.

したがって、あなたの場合、grep -w adhあなたが望むことをするべきです。

于 2013-07-25T14:52:42.527 に答える
0

まず、解析しないでください。これはls一般的に悪いニュースです。

しかし、これがタグ付けされているので、perl私はパーリッシュな答えを提供します:

perl -e 'print join "\n", grep { /adh\b/ } glob "*"'

globディレクトリパターンを展開します。

grep... は、regex を使用するという点で grep に似ていますが、実際には任意のコード ブロックも使用できます。

(したがって、たとえば次のことができます。

grep { -f && /adh\b/ } 

その名前のファイル ( file test)だけをフィルタリングするには。または何か-fを実行します。stat

joinそれが言うことをします-結合文字、この場合は改行で複数の結果をくっつけます。

于 2015-12-30T14:23:57.817 に答える
-2

これを試すことができます:

ls -al | grep -Fx adh

どこ、

-F, --fixed-strings

PATTERN を固定文字列 (のリスト) として解釈します。

-x, --line-regexp

行全体に正確に一致する一致のみを選択します。

于 2013-07-25T12:33:44.057 に答える