awk如何取出匹配的字段
我有个文件file.txt,内容如下:groups=001(group1),002(group2),003(group3)groups=004(group4),005(g...
我有个文件file.txt,内容如下:
groups=001(group1),
002(group2),
003(group3)
groups=004(group4),
005(group5)
我想通过awk+正则表达式把括弧里的字段取出来,输出这样的结果:
group1
group2
group3
group4
group5
应该怎么写?
再重申一下,我想知道怎么用awk+正则表达式来完成。 展开
groups=001(group1),
002(group2),
003(group3)
groups=004(group4),
005(group5)
我想通过awk+正则表达式把括弧里的字段取出来,输出这样的结果:
group1
group2
group3
group4
group5
应该怎么写?
再重申一下,我想知道怎么用awk+正则表达式来完成。 展开
4个回答
展开全部
awk如何取出匹配的字段
uboot环境变量中匹配出root=/dev/mtdblock6,sed比较适合
str='update_args=setenv bootargs console=ttyS0,115200n8 ip=$(ipaddr):$(serverip) root=/<a href="https://www.baidu.com/s?wd=dev&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YLnWmLuyR1ujubnHb4mhmv0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1f4PHbsrH04nj0YrHRznHmYP0" target="_blank" class="baidu-highlight">dev</a>/mtdblock6 rw rootfstype=jffs2 mem=64M video=davincifb:vid0=<a href="https://www.baidu.com/s?wd=OFF&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YLnWmLuyR1ujubnHb4mhmv0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1f4PHbsrH04nj0YrHRznHmYP0" target="_blank" class="baidu-highlight">OFF</a>:vid1=<a href="https://www.baidu.com/s?wd=OFF&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YLnWmLuyR1ujubnHb4mhmv0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1f4PHbsrH04nj0YrHRznHmYP0" target="_blank" class="baidu-highlight">OFF</a>:osd0=720x576x16,4050K eth=$(ethaddr)'
echo "$str" | sed -r 's/.*(root=[^ ]+) .*/\1/'即可。
uboot环境变量中匹配出root=/dev/mtdblock6,sed比较适合
str='update_args=setenv bootargs console=ttyS0,115200n8 ip=$(ipaddr):$(serverip) root=/<a href="https://www.baidu.com/s?wd=dev&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YLnWmLuyR1ujubnHb4mhmv0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1f4PHbsrH04nj0YrHRznHmYP0" target="_blank" class="baidu-highlight">dev</a>/mtdblock6 rw rootfstype=jffs2 mem=64M video=davincifb:vid0=<a href="https://www.baidu.com/s?wd=OFF&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YLnWmLuyR1ujubnHb4mhmv0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1f4PHbsrH04nj0YrHRznHmYP0" target="_blank" class="baidu-highlight">OFF</a>:vid1=<a href="https://www.baidu.com/s?wd=OFF&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YLnWmLuyR1ujubnHb4mhmv0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1f4PHbsrH04nj0YrHRznHmYP0" target="_blank" class="baidu-highlight">OFF</a>:osd0=720x576x16,4050K eth=$(ethaddr)'
echo "$str" | sed -r 's/.*(root=[^ ]+) .*/\1/'即可。
展开全部
awk 'BEGIN{FS="[()]"} {if($0~/^.*[0-9][0-9][0-9]\(group[0-9]+\).*$/) print $2}' file.txt
或者
awk '{sub(/^.*[0-9][0-9][0-9]\(/,""); sub(/\).*$/,""); print}' file.txt
或者
awk '{sub(/^.*[0-9][0-9][0-9]\(/,""); sub(/\).*$/,""); print}' file.txt
更多追问追答
追问
再麻烦一下,其实我给的例子不是要匹配group+数字,而只是要匹配并输出括号里的东西而已,
具体的输入是这样的:
gid=7323(tradem)
gid=31467(trmusprv)
gid=7054(vbroker)
gid=70091(wasndgrp)
gid=1384(wasops)
gid=2001(watchdog)
gid=31066(taskftp)
gid=31397(wlcosftp)
gid=7502(eus)
谢谢
追答
还是 awk+正则表达式 ?
awk '{sub(/^gid=[0-9][0-9]*\(/,""); sub(/\)$/,""); print}' file.txt
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
awk -F "(" '{print $2}' file.txt | awk -F ")" '{print $1}'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
awk '{sub(/^gid=[0-9]+\(/,""); sub(/\)$/,""); print}' file.txt
使用 + 更合理
而且,这都是基于每行格式都是 ....(.....).... 这样的,其中只有一对圆括号,且是先左后右,那么还可以这样写:
awk -F"[()]" '{print $2}' file.txt
当然这个命令在只出现一边圆括号时匹配不对,无圆括号则匹配不到
也可以用sed实现,匹配排除无一对圆括号的行
sed '{/.*(.*).*/b lable;/.*/d;:lable;s/.*(//;s/).*$//}' file.txt
使用 + 更合理
而且,这都是基于每行格式都是 ....(.....).... 这样的,其中只有一对圆括号,且是先左后右,那么还可以这样写:
awk -F"[()]" '{print $2}' file.txt
当然这个命令在只出现一边圆括号时匹配不对,无圆括号则匹配不到
也可以用sed实现,匹配排除无一对圆括号的行
sed '{/.*(.*).*/b lable;/.*/d;:lable;s/.*(//;s/).*$//}' file.txt
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询