私は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」なしで行を印刷し、その後に行の末尾にスペースまたは制御文字が続くことを意味します。
答え2
あなたがしなければならないこと:
grep -v '2 *$' mysampledata.txt
この-v
オプションは一致を反転します。これはファイルの場合であり、望ましくないようなので、末尾にスペースがある行をサポートします。
Susy oranges 12 $
出力するには($
ここでは行の終わりを表示します)。