[英]Awk indicating the first character not to be #
有沒有辦法指定第一個字符不是什么? 有很多方法可以限制它可以成為什么,但我不記得有什么方法可以說它不能成為什么。
例如,如果! 不應該是
root 4
awk {/[!#][Rr][Oo][Oo][Tt]/{ }}
括號表達式中“not”的符號是脫字符(或“circumflex”) ^
,但它必須是括號內的第一個字符才能具有此含義。 上面注釋中給出的示例是[^#]
,這意味着一個不是#
字符。 因此正則表達式/[^#]/
將匹配不具有任何字符串#
在任何地方。 這不是您要求的全部內容:
有沒有辦法指定第一個字符不是什么?
使某些人難以閱讀正則表達式的一件事是,許多符號根據上下文具有不同的含義。 脫字符^
也用於表示一行的開始。 使用 awk 中的正則表達式,您可以指定該行的第一個字符(行首之后的第一個字符^
)不是#
與:
awk '/^[^#]/{ ... }'
這將為每行不以#
開頭的輸入行執行代碼塊{ ... }
。 但是請注意,這將匹配以其他字符開頭的行,然后在其中某處有一個#
。 /^[^#]/
也不會匹配空行,因為[^#]
要使用的字符。 如您所見,在根據需要定制正則表達式時,需要考慮許多細微差別和微妙之處。 有關更多信息,請查找awk regex 、 POSIX regex ,或者在您的終端中輸入man -s7 regex
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.