Regex 如何在不使用match()函数的情况下在awk中使用单词边界?
我想将单词边界添加到此awk命令:Regex 如何在不使用match()函数的情况下在awk中使用单词边界?,regex,awk,word-boundary,Regex,Awk,Word Boundary,我想将单词边界添加到此awk命令: awk '{$0=tolower($0)};/wordA/&&/wordB/ { print FILENAME ":" $0; }' myfile.txt 我尝试在wordA和wordB的左右两侧添加\y,但在我的测试中无效。 我试过:/\ywordA\y/&/\ywordB\y/ 谢谢大家 (注:我是awk新手,所以我试图避免使用match()函数。)是否要使用gawk而不是awk: gawk '{$0=tolower($0)};/\ywo
awk '{$0=tolower($0)};/wordA/&&/wordB/ { print FILENAME ":" $0; }' myfile.txt
我尝试在wordA
和wordB
的左右两侧添加\y
,但在我的测试中无效。我试过:
/\ywordA\y/&/\ywordB\y/
谢谢大家
(注:我是awk新手,所以我试图避免使用match()函数。)是否要使用gawk而不是awk:
gawk '{$0=tolower($0)};/\ywordA\y/&&/\ywordB\y/ { print FILENAME ":" $0; }' myfile.txt
如果您的系统出现问题(例如,在Mac OS X上),将执行您想要的操作\y是awk的GNU扩展。这可能适用于您:
awk'{$0=tolower($0)}/[[::]/&&/[::]/{打印文件名“$0;}”myfile.txt
但由于它在linux上无法工作,所以最好安装GNU awk
\
约定李>
虚词(s,i){
对于(i=1;i您的花括号似乎没有正确平衡;您的}
s比{
s多。我只知道一个版本的awk能够理解\b
单词边界:当您运行a2p时得到的边界。:)我也尝试了\b,但没有工作(mac osx).@bookedbyprimes你不懂。a2p someawkcode | perl
是awk-to-perl转换器。这样你就可以得到真正的perl正则表达式。
awk '{$0=tolower($0)};/[[:<:]]wordA[[:>:]]/&&/[[:<:]]wordB[[:>:]]/ { print FILENAME ":" $0; }' myfile.txt
/\<[abc]\>/ { print "matched"; }
word("[abc]") { print "matched"; }