如何将字符串与 AWK 进行匹配?
假设我有 string ,[(*.+
它应该只匹配包含 string 的字符串[(*.+
。
该字符串由用户输入,因此如果您知道可以转义正则表达式的 cli 实用程序,它也可能起作用。
编辑:
它还应该匹配包含该字符串的字符串,例如foo[(*.+bar
.
答案1
awk
使用运算符进行字符串比较==
,使用index(haystack, needle)
函数进行字符串搜索。
read -r string # user types [(*.+
{ echo 'stuff [(*.+ stuff'; echo ')]*.+'; } | awk -v string="$string" 'index($0, string)'
# output: 'stuff [(*.+ stuff'
答案2
基本上,awk 将 "" 内的字符视为字符串,将 // 内的字符视为正则表达式:
[root@me ~]# echo "[(*.+" | gawk '"[(*.+"'
[(*.+
[root@me~]# echo "[(*.+" | gawk '/[(*.+/'
gawk: /[(*.+/
gawk: ^ unterminated regexp
gawk: fatal: Unmatched [ or [^: /[(*.+//