[英]Using a variable in a regular expression
我正在使用一些sub(), gsub()
函數來替換存儲在變量中的內容。
比如說:
$ awk 'BEGIN {str="hello bee"; patt="llo"; gsub(patt,"XX",str); print str}'
heXX bee
這將替換str
包含的所有llo
與XX
的字符串。 尼斯。
現在說我想使用一個使用變量和模式的更復雜的正則表達式。 例如, "he"
+變量patt
。 我該怎么做?
如果我嘗試gsub(/he/patt, ...)
它不起作用:
awk 'BEGIN {str="hello bee"; patt="llo"; gsub(/he/patt,"XX",str); print str}'
返回
hello bee
代替
XX bee
那時你需要字符串連接,因此必須使用字符串分隔符而不是regexp的regexp分隔符:
$ awk 'BEGIN {str="hello bee"; patt="llo"; gsub("he"patt,"XX",str); print str}'
XX bee
請注意,您需要將任何轉義字符加倍,因為awk必須首先將字符串轉換為正則表達式,這樣才能使用其中一個轉義字符。
你可以做:
awk 'BEGIN {str="hello bee"; patt="llo"; gsub("he" patt,"XX",str); print str}'
XX bee
/he/patt
沒有把字符串連在一起,但"he" patt
確實如此。
這會奏效
awk 'BEGIN {str="hello bee"; patt="llo"; gsub(patt,"XX",str); print str}'
heXX bee
基本上你必須將完整模式定義為變量,而不是它的一部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.