正则表达式 – 将变量传递给awk,并在正则表达式中使用变量
发布时间:2020-12-14 06:33:11 所属栏目:百科 来源:网络整理
导读:我正在学习awk,我无法将变量传递给脚本,并将其用作正则表达式搜索模式的一部分。 这个例子是有创意的,但显示了我的概念。 我的数据如下: Eddy Smith 0600000000 1981-07-16 Los AngelesFrank Smith 0622222111 1947-04-29 Chicago Victoria McSmith 0687
我正在学习awk,我无法将变量传递给脚本,并将其用作正则表达式搜索模式的一部分。
这个例子是有创意的,但显示了我的概念。 我的数据如下: Eddy Smith 0600000000 1981-07-16 Los Angeles Frank Smith 0622222111 1947-04-29 Chicago Victoria McSmith 0687654321 1982-12-16 Los Angeles Barbara Smithy 0633244321 1984-06-24 Boston Jane McSmithy 0612345678 1947-01-15 Chicago Grace Jones 0622222222 1985-10-07 Los Angeles Bernard Jones 0647658763 1988-01-01 New York George Jonesy 0623428948 1983-01-01 New York Indiana McJones 0698732298 1952-01-01 Miami Philip McJonesy 0644238523 1954-01-01 Miami 我想要一个awk脚本,我可以传递一个变量,然后让awk脚本做一个正则表达式的变量。 #this awk script looks for a certain name,returns firstName,lastName and City #print column headers BEGIN { printf "firstName lastName Cityn"; } #look for the name,print firstName,lastName and City $2 ~ name { printf $1 " " $2 " " $5 " " $6; printf "n"; } 我打电话给这样的脚本: awk -f 003_search_persons.awk name=Smith 003_persons.txt 它返回以下,这是好的。 firstName lastName City Eddy Smith Los Angeles Frank Smith Chicago Victoria McSmith Los Angeles Barbara Smithy Boston Jane McSmithy Chicago 但是现在我想要找一个前缀“Mc”。我可以把这个硬编码,但是我想要一个灵活的awk脚本。我在003_search_persons_prefix.awk中写了以下内容。 #this awk script looks for a certain prefix to a name,lastName and City #print column headers BEGIN { printf "firstName lastName Cityn"; } #look for the prefix,lastName and City /^prefix/{ printf $1 " " $2 " " $5 " " $6; printf "n"; } 我打电话给这样的脚本: awk -f 003_search_persons_prefix.awk prefix=Mc 003_persons.txt 但现在没有发现任何记录。 问题是搜索模式“/ ^前缀/”。我知道我可以用非正则表达式替换那个搜索模式,如第一个脚本,但是假设我想用正则表达式来做,因为我需要前缀真的是在lastName字段的开始,因为它应该是一个前缀和全部;-) 我该如何做?
你可以试试这个
BEGIN{ printf "firstName lastName Cityn"; split(ARGV[1],n,"=") prefix=n[2] pat="^"prefix } $0 ~ pat{ print "found: "$0 } 产量 $ awk -f test.awk name=Jane file firstName lastName City found: Jane McSmithy 0612345678 1947-01-15 Chicago 看看awk documentation更多。 (从头到尾阅读!) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |