awk汉字正则匹配

awk汉字正则匹配,第1张

[root@localhost ~]# echo "塞纳河饼屋" | awk '{if($1~/^[a-z][a-z][a-z][a-z][a-z][a-z]/) print 1}'

[root@localhost ~]#

我这里没输出,你环境不对!

1

echo " baby go " | awk '{sub("^ ","");sub(" $","");print}'

使用sub替换,结合正则中的限位符^和$即可。

^匹配字符串开头位置,$匹配字符串结尾位置。

结尾的空格有没有去掉,直接这样看不出。可以使用下面的方式测试:

将正则匹配部分放入捕获括号,用gensub替换,例如:

gensub(/a()b/,"\\1",1) 返回值为匹配正则第1对()内的内容

使用其他替换函数可能也能达到类似的效果

#!/bin/bash

awk \

-vfile1="/tmp/udptxt" \

-vfile2="/tmp/sshd_config" \

'BEGIN{

mstr = ""

while(getline<file1>0){

if($0 ~ /^\#udp\(ip\(\"0000\"\) port \(514\)/)

mstr = mstr substr($0, 2) "\n"

else

mstr = mstr $0 "\n"

}

print mstr > file1

mstr = ""

while(getline<file2>0){

if($0 ~ /^\#permit root login yes$/)

mstr = mstr substr($0, 2) "\n"

else

mstr = mstr $0 "\n"

}

print mstr > file2

}'

我不知道你说的那两个文件的路径如何,所以就放了/tmp,你自己可以相应更动。sshd_config那条是删掉#,还是整行删掉?上边code是删掉#,如果要整行删掉,就改成mstr = mstr就好了。

1、“^”是匹配以什么字符或字符串开头的,匹配正确返回1,否则返回0。

2、“$”是匹配以什么字符或字符串结尾的,匹配正确返回1,否则返回0。

3、“”是匹配任意的单个字符,返回正确的为1,否则为0。

4、“[]”是匹配中括号内的任意字符,如果匹配上返回1,否则返回0。

5、“[^]”是匹配不出中括号内的任意字符,正确返回1,否则返回0。

注意事项:

shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。

awk 'NR==FNR{a[$1]=$2;next}{if($1 in a)print $0,a[$1]}' file1  file2

或者直接用join

join file2 file1

以上就是关于awk汉字正则匹配全部的内容,包括:awk汉字正则匹配、awk怎么提取空格前的字符、awk如何输出正则匹配的部分等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9515942.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存