使用AWK包含正斜杠的搜索模式

使用AWK包含正斜杠的搜索模式,awk,Awk,在AWK中,有没有一种方法可以匹配包含正斜杠的模式而不实际转义它 awk '$1~/pattern/' file 只要模式中没有任何/,上述命令就可以正常工作 我正在寻找类似于中提供的在搜索和替换语法中使用不同分隔符的内容。是的,您可以这样做 awk '$0~v' v="patt/ern" 解释 N.B.:摘自评论,所以也投票吧 在awk中,动态正则表达式和正则表达式常量不完全相同。OP问题中的示例是正则表达式常量,您将其转换为动态正则表达式(请参见。)。这对您来说可能没问题: kent$

在AWK中,有没有一种方法可以匹配包含正斜杠的模式而不实际转义它

awk '$1~/pattern/' file
只要模式中没有任何
/
,上述命令就可以正常工作

我正在寻找类似于中提供的在搜索和替换语法中使用不同分隔符的内容。

是的,您可以这样做

awk '$0~v' v="patt/ern"
解释 N.B.:摘自评论,所以也投票吧


awk
中,动态正则表达式和正则表达式常量不完全相同。OP问题中的示例是正则表达式常量,您将其转换为动态正则表达式(请参见。)。

这对您来说可能没问题:

kent$ echo "///aaa"|awk '/[/]/'
///aaa

感谢您的回复,但模式可能没有
/
那么简单。它可能是
a/b
,因为它可能来自另一个文件,所以我不喜欢任何修改,而是希望按原样放置模式。我希望这很清楚。@jksha我的意思是,你不必逃避
/
,你可以使用char类。如果您的模式需要
foo/bar/blah
,您只需
foo[/]bar[/]blah
我就可以了。您建议用
[/]
代替
\/
,但我希望的是不要改变正则表达式模式。它来自某个映射文件,我计划将其存储在数组中,并将其用作匹配模式rm+1,作为转义的备用选项。但我会接受其他ans。@jkshah谢谢,很好。关键是你的问题解决了。:)最好添加一些描述,说明在awk
动态正则表达式
正则表达式常量
中不完全相同。OP问题中的例子是
正则表达式常量
你把它变成了
动态正则表达式
@Kent我不知道
正则表达式常量
正则表达式常量
之间有什么区别,但不知怎么地,这符合我的要求。@jksha简单地说,
$0~/pattern/
$0~“pattern”并不完全相同
,这取决于模式。您当前的模式可能有效。但你应该谨慎使用。请看这里:@Kent谢谢你的推荐。现在我明白了。因为我的模式几乎是来自某个映射文件的常量字符串,所以这应该可以正常工作。我的印象是只有
/
有效。谢谢你的帮助。