特定の文字で終わらない行の一致

特定の文字で終わらない行の一致

私はLinuxコマンドを学んでいますが、このエラーが発生しました。私のテキストは次のとおりです。

Fred apples 20
Susy oranges 12 
Mark watermellons 12
Robert pears 4
Terry oranges 9
Lisa peaches 7
Egemen aaaa 12
Susy oranges 12
Mark grapes 39
Anne mangoes 7
Greg pineapples 3
Oliver rockmellons 2
Betty limes 14

で終わらない行を検索しました2。私のコマンド:

egrep '2.+' mysampledata.txt

しかし興味深いのは、次の2行が表示されることです。

Fred apples 20
Susy oranges 12

このコマンドの他のパラメータを試して行の順序を変更しました。私は間違った結果を得ることができません。

この工事に問題があるのでしょうか?

ベストアンサー1

行が「2」で終わらないようにするには、次のようにします。

grep '[^2]$' <filename>

ここで '$' は行の終わりと一致し、 '[^2] は '2' を除くすべてを意味します。したがって、「[^2] $」は、「2」以外の行末のすべての文字と一致することを意味します。

コマンドは、egrep '2.+' mysampledata.txt「2」を含む行と複数回表示される文字を検索します。したがって、出力は次のようになります。

Fred apples 20

行の終わりの誤った配置により、追加の行が発生する可能性Susy oranges 12があります。space

編集する:以下は、末尾のスペースの数や印刷できない文字も考慮します。

grep -v '2[[:blank:][:cntrl:]]*$' <filename>

これは、「2」または「2」なしで行を印刷し、その後に行の末尾にスペースまたは制御文字が続くことを意味します。

おすすめ記事