【发布时间】:2021-03-30 23:16:14
【问题描述】:
在 AWK 中,有没有办法匹配包含正斜杠 / 的模式而不实际转义它?
awk '$1~/pattern/' file
只要模式中没有/,上述命令就可以正常工作。
我正在寻找类似于 sed 中可用的内容,以便在搜索和替换语法中使用不同的分隔符。
【问题讨论】:
标签: awk
在 AWK 中,有没有办法匹配包含正斜杠 / 的模式而不实际转义它?
awk '$1~/pattern/' file
只要模式中没有/,上述命令就可以正常工作。
我正在寻找类似于 sed 中可用的内容,以便在搜索和替换语法中使用不同的分隔符。
【问题讨论】:
标签: awk
是的,你可以这样做
awk '$0~v' v="patt/ern"
注:从 cmets 中提取,所以也给他们点赞吧!
在awk中动态正则表达式和正则表达式常量并不完全相同。 OP 问题中的示例是 regex constant,您将其转换为 dynamic regex(请参阅。Using Dynamic Regexps)。
【讨论】:
dynamic regex 和 regex constant 不完全相同的描述。 OP 问题中的示例是regex constant 你把它变成了dynamic regex
regex constant 和 regex constant 之间的区别,但不知何故这符合我的要求。
$0~/pattern/ 与$0~"pattern" 不完全相同,这取决于模式。您当前的模式可能有效。但你应该谨慎使用它。看这里:math.utah.edu/docs/info/gawk_5.html#SEC32
// 有效。感谢您的帮助。
这对你来说可能没问题:
kent$ echo "///aaa"|awk '/[/]/'
///aaa
【讨论】:
/ 那样简单。它可能是a/b,因为它可能来自另一个文件,所以我不喜欢任何修改并希望按原样放置模式。我希望它很清楚。
/,你可以使用char-class。如果您的模式需要foo/bar/blah,您只需foo[/]bar[/]blah
[/] 代替\/,但我想要的不是改变正则表达式模式。它来自一些地图文件,我打算将它存储在数组中并将其用作匹配模式