文字列のgrepの前に別の文字列がない


回答:


9

これは、否定的な後読み付きの正規表現を使用して解決できます(greparrangeのコメントで指摘されているように、実験的にサポートされています)。

$ grep -P '(?<!Mr )John Smith' file

サポートは実験的なものなので、perl代わりに使用することをお勧めします。

$ perl -nle 'print if /(?<!Mr )John Smith/' file

grep:で実験的にサポートされていますecho $string | grep -P '(?<!Mr )John Smith'
手配

@確かに。ありがとう、答えを更新します。
jcollado

6

実行できます

command | grep 'John Smith' | grep -v 'Mr John Smith'

1
いいアイデアですが、ラインがある場合は機能しませんJohn Smith Mr John Smith John Smith
Ron

1

正規表現を使用するには、^と$を使用します

grep "^John Smith$"

^は最初から一致$は最後から一致

構文は、どのファイルで何を検索するかによって異なります。

sed、grep、awk ...で正規表現を使用できます。

bodhi@Ubuntu:~ cat file
Mr John Smith
John Smith
John
Smith

bodhi@Ubuntu:~ grep "^John Smith$" file
John Smith

OPは、文字列がその行の唯一のものであることを要求しません。
enzotib 2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.