簡體   English   中英

awk 指示第一個字符不是#

[英]Awk indicating the first character not to be #

有沒有辦法指定第一個字符不是什么? 有很多方法可以限制它可以成為什么,但我不記得有什么方法可以說它不能成為什么。

例如,如果! 不應該是

root 4

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

括號表達式中“not”的符號是脫字符(或“circumflex”) ^ ,但它必須是括號內的第一個字符才能具有此含義。 上面注釋中給出的示例是[^#] ,這意味着一個不是#字符。 因此正則表達式/[^#]/將匹配不具有任何字符串#任何地方 這不是您要求的全部內容:

有沒有辦法指定第一個字符不是什么?

使某些人難以閱讀正則表達式的一件事是,許多符號根據上下文具有不同的含義。 脫字符^也用於表示一行的開始。 使用 awk 中的正則表達式,您可以指定該行的第一個字符(行首之后的第一個字符^ )不是#與:

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

這將為每行#開頭的輸入行執行代碼塊{ ... } 但是請注意,這將匹配以其他字符開頭的行,然后在其中某處有一個# /^[^#]/不會匹配空行,因為[^#]要使用的字符。 如您所見,在根據需要定制正則表達式時,需要考慮許多細微差別和微妙之處。 有關更多信息,請查找awk regexPOSIX regex ,或者在您的終端中輸入man -s7 regex

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM