2016-12-04 4 views
-3

最初の文字を何かに指定する方法はありますか? できることを制限する方法はたくさんありますが、私はそれができないことを言う方法を思い出さない。最初の文字を示すAwk#

たとえば!

root 4 

awk {/[!#][Rr][Oo][Oo][Tt]/{ }} 
+3

ワイルドカードではない正規表現「[^#]」 –

答えて

2

ブラケット表現にキャレット(または「【外」)^ですが、それはがこの意味を持っているために、カッコ内の最初の文字でなければならない「」のシンボルであることを意味しません。上記の例で与えられた例は[^#]であり、それは#ではない1文字を意味します。したがって、正規表現/[^#]/は、#のいずれかの文字列に一致します。です。

最初の文字何かにならないを指定する方法があります:これは、あなたが尋ねたもののすべてではないでしょうか?

多くの記号が文脈に基づいて異なる意味を持つということがあります。キャレット^は、行の先頭を示すためにも使用されます。 awkでの正規表現を使用すると、行の最初の文字(行^開始後の最初のもの)がないことを指定することができ#で:これは、ためのコード{ ... }のブロックを実行します

awk '/^[^#]/{ ... }' 

ではなく、で始まるすべての入力行は、行頭に#で始まります。ただし、これは他の文字で始まり、そのあとに#という行があることに注意してください。 /^[^#]/ではなく、[^#]の文字がないため、は空白行と一致します。ご覧のように、必要に応じて正規表現を調整する際には、微妙な微妙な違いがあります。詳細については、awk regexPOSIX regexを検索するか、端末にman -s7 regexと入力してください。

関連する問題