免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: wangmice
打印 上一主题 下一主题

[文本处理] 如何用awk实现取两匹配行之间的行但包括第一匹配不包括第二匹配? [复制链接]

论坛徽章:
0
21 [报告]
发表于 2015-03-15 18:47 |只看该作者
本帖最后由 wangmice 于 2015-03-15 18:52 编辑

回复 20# 我是一隻羊

不加eval执行结果是:
  1. paramStr        9M+7JzF+8VNrE2IAvqV2FUFMyVEsn38h6RiF2+Ue4X9yA+9xDq0lBHiCCI4gVC0cyO9XDXEL6+Wx2m0u8T5PpSrUVJ+tcNsqVU7wiqRBCEsUjfVEM9AiH8K02/HAhUeIhPirem6uuy8IT07tav4gmkV3YaJk2R6lnDwPKifC6mhQ3Pw/rAA2CC9qkK0xSsmvOl2abwaWt9cWgnc8TRSpyspj9Imr8RpsZC7tjpO2Y0hQ6MPnjEvcWzdRFapyKcqUX4nOcT8BW6tlyLGEgdEvdP0zTDv8T7FHn6wx8pnFgmN6FgLoFtTIMW+iSbc9lvVapu2eBpBlcnU2PpEt3om/N9uiLyuUOjoZyVNU83OoEoSK9jYYSr0o+Zrr32/QMoLHPQd53jNnlO4=
  2. paramStrEnc     CE9O7Wr%2BIJpFd2GiZNkepRRC6cujNLJjXDED1FtB5UAn%2Fn4IGzDg88fzX1I%2BH%2FYDB1sW%2BVQmKvag%0A0qNso4FuRdFstj%2FdpprHwmIYP9emmCTUSxIUSH5gArE6gUvP0bzdUhf%2FxDJRePPAIhFsvdW2nGhV%0ARsjfcjeFLnvfLIee%2F4M8Jjm89iJwTPj8rnfI0j%2F%2Bb9kY4EHLaaOqLEPwatzaKDob8jf0MA%2BZbshC%0AHlAAc%2FhdsLpj75ZhUg52oRijEiB86kj0ctcBCZZEg2trACgFexQLJqO4Z1pz5bInGBlxYkOqiBQu%0AEleCbauY9%2B3Y9%2FolQE3hQ2h64hVM7IIyOR%2BBN4GNQmg49HCSIVZitAiHyU4uGpY6WlbSPttKaDrk%0AyWWfCeYzCvXni%2BalDYmmkdcMf8%2Fgq80qnDn4
复制代码
加了以后没报错,但看不到输出,我在前面加echo后显示的是:
  1. eval paramStr=9M+7JzF+8VNrE2IAvqV2FUFMyVEsn38h6RiF2+Ue4X9yA+9xDq0lBHiCCI4gVC0cyO9XDXEL6+Wx2m0u8T5PpSrUVJ+tcNsqVU7wiqRBCEsUjfVEM9AiH8K02/HAhUeIhPirem6uuy8IT07tav4gmkV3YaJk2R6lnDwPKifC6mhQ3Pw/rAA2CC9qkK0xSsmvOl2abwaWt9cWgnc8TRSpyspj9Imr8RpsZC7tjpO2Y0hQ6MPnjEvcWzdRFapyKcqUX4nOcT8BW6tlyLGEgdEvdP0zTDv8T7FHn6wx8pnFgmN6FgLoFtTIMW+iSbc9lvVapu2eBpBlcnU2PpEt3om/N9uiLyuUOjoZyVNU83OoEoSK9jYYSr0o+Zrr32/QMoLHPQd53jNnlO4= paramStrEnc=CE9O7Wr%2BIJpFd2GiZNkepRRC6cujNLJjXDED1FtB5UAn%2Fn4IGzDg88fzX1I%2BH%2FYDB1sW%2BVQmKvag%0A0qNso4FuRdFstj%2FdpprHwmIYP9emmCTUSxIUSH5gArE6gUvP0bzdUhf%2FxDJRePPAIhFsvdW2nGhV%0ARsjfcjeFLnvfLIee%2F4M8Jjm89iJwTPj8rnfI0j%2F%2Bb9kY4EHLaaOqLEPwatzaKDob8jf0MA%2BZbshC%0AHlAAc%2FhdsLpj75ZhUg52oRijEiB86kj0ctcBCZZEg2trACgFexQLJqO4Z1pz5bInGBlxYkOqiBQu%0AEleCbauY9%2B3Y9%2FolQE3hQ2h64hVM7IIyOR%2BBN4GNQmg49HCSIVZitAiHyU4uGpY6WlbSPttKaDrk%0AyWWfCeYzCvXni%2BalDYmmkdcMf8%2Fgq80qnDn4
复制代码

论坛徽章:
28
2015年迎新春徽章
日期:2015-03-04 10:16:53午马
日期:2015-03-20 17:11:07亥猪
日期:2015-03-20 17:11:23戌狗
日期:2015-03-20 17:11:33酉鸡
日期:2015-03-20 17:11:47申猴
日期:2015-03-20 17:11:58未羊
日期:2015-03-20 17:12:10子鼠
日期:2015-03-20 17:12:23丑牛
日期:2015-03-20 17:12:40卯兔
日期:2015-03-20 17:12:51辰龙
日期:2015-03-20 17:13:00巳蛇
日期:2015-03-20 17:13:12
22 [报告]
发表于 2015-03-15 18:59 |只看该作者
本帖最后由 我是一隻羊 于 2015-03-15 19:00 编辑

回复 22# wangmice

有点乱了呢....
  1. eval $(sed -r '/</{:1;/>/!{N};s/\n//g;/>/!b1;s/.*name="([^"]+).*value="([^"]+).*/\1=\2/}' inputfile)
复制代码
  1. eval $(awk -vRS=\< -vFS=\" 'NR>1{gsub(/\n/,"");print $4"="$8}' inputfile)
复制代码
这两个是直接赋值,是没有输出的,以你的文本为例,执行之后直接
  1. echo $paramStr
复制代码
就会打印出后面的字符串.
  1. sed -r '/</{:1;/>/!{N};s/\n//g;/>/!b1;s/.*name="([^"]+).*value="([^"]+).*/\1\t\2/}' inputfile
复制代码
  1. awk -vRS=\< -vFS=\" 'NR>1{gsub(/\n/,"");print $4"\t"$8}' inputfile
复制代码
这两个是只打印,不赋值,输出格式是:<变量名>table<变量值>

论坛徽章:
0
23 [报告]
发表于 2015-03-15 19:09 |只看该作者
回复 23# 我是一隻羊


    收到,了解了,问题解决了。谢谢,我再消化消化。

论坛徽章:
22
2015年亚洲杯之科威特
日期:2015-04-18 15:27:07每日论坛发贴之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之广夏
日期:2016-03-28 16:20:51程序设计版块每日发帖之星
日期:2016-04-09 06:20:00CU十四周年纪念徽章
日期:2016-05-03 09:35:1415-16赛季CBA联赛之天津
日期:2016-11-18 08:31:3115-16赛季CBA联赛之山西
日期:2016-12-07 16:29:5315-16赛季CBA联赛之八一
日期:2017-01-10 11:34:3415-16赛季CBA联赛之吉林
日期:2017-03-30 22:51:1915-16赛季CBA联赛之广夏
日期:2017-04-13 20:51:52程序设计版块每日发帖之星
日期:2016-01-27 06:20:00每日论坛发贴之星
日期:2015-12-28 06:20:00
24 [报告]
发表于 2015-03-15 20:11 |只看该作者
回复 17# wangmice


    哦,谢谢刚回来看到你们的回答,
如果要干掉奇数行 和 偶数行呢?

论坛徽章:
22
2015年亚洲杯之科威特
日期:2015-04-18 15:27:07每日论坛发贴之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之广夏
日期:2016-03-28 16:20:51程序设计版块每日发帖之星
日期:2016-04-09 06:20:00CU十四周年纪念徽章
日期:2016-05-03 09:35:1415-16赛季CBA联赛之天津
日期:2016-11-18 08:31:3115-16赛季CBA联赛之山西
日期:2016-12-07 16:29:5315-16赛季CBA联赛之八一
日期:2017-01-10 11:34:3415-16赛季CBA联赛之吉林
日期:2017-03-30 22:51:1915-16赛季CBA联赛之广夏
日期:2017-04-13 20:51:52程序设计版块每日发帖之星
日期:2016-01-27 06:20:00每日论坛发贴之星
日期:2015-12-28 06:20:00
25 [报告]
发表于 2015-03-15 20:38 |只看该作者
回复 16# songyc_2015


    我回错楼层了

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
26 [报告]
发表于 2015-03-15 21:00 |只看该作者
回复 1# wangmice

$ awk -vk="paramStrEnc" '$0~"name=\""k"\""{M=1}M{S=S$0;if(match(S,"value=\"([^\"]+)\" />",a)){print a[1];exit}}' FILE
CE9O7Wr%2BIJpFd2GiZNkepRRC6cujNLJjXDED1FtB5UAn%2Fn4IGzDg88fzX1I%2BH%2FYDB1sW%2BVQmKvag%0A0qNso4FuRdFstj%2FdpprHwmIYP9emmCTUSxIUSH5gArE6gUvP0bzdUhf%2FxDJRePPAIhFsvdW2nGhV%0ARsjfcjeFLnvfLIee%2F4M8Jjm89iJwTPj8rnfI0j%2F%2Bb9kY4EHLaaOqLEPwatzaKDob8jf0MA%2BZbshC%0AHlAAc%2FhdsLpj75ZhUg52oRijEiB86kj0ctcBCZZEg2trACgFexQLJqO4Z1pz5bInGBlxYkOqiBQu%0AEleCbauY9%2B3Y9%2FolQE3hQ2h64hVM7IIyOR%2BBN4GNQmg49HCSIVZitAiHyU4uGpY6WlbSPttKaDrk%0AyWWfCeYzCvXni%2BalDYmmkdcMf8%2Fgq80qnDn4

$ awk -vk="paramStr" '$0~"name=\""k"\""{M=1}M{S=S$0;if(match(S,"value=\"([^\"]+)\" />",a)){print a[1];exit}}' FILE
9M+7JzF+8VNrE2IAvqV2FUFMyVEsn38h6RiF2+Ue4X9yA+9xDq0lBHiCCI4gVC0cyO9XDXEL6+Wx2m0u8T5PpSrUVJ+tcNsqVU7wiqRBCEsUjfVEM9AiH8K02/HAhUeIhPirem6uuy8IT07tav4gmkV3YaJk2R6lnDwPKifC6mhQ3Pw/rAA2CC9qkK0xSsmvOl2abwaWt9cWgnc8TRSpyspj9Imr8RpsZC7tjpO2Y0hQ6MPnjEvcWzdRFapyKcqUX4nOcT8BW6tlyLGEgdEvdP0zTDv8T7FHn6wx8pnFgmN6FgLoFtTIMW+iSbc9lvVapu2eBpBlcnU2PpEt3om/N9uiLyuUOjoZyVNU83OoEoSK9jYYSr0o+Zrr32/QMoLHPQd53jNnlO4=

   

论坛徽章:
22
2015年亚洲杯之科威特
日期:2015-04-18 15:27:07每日论坛发贴之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之广夏
日期:2016-03-28 16:20:51程序设计版块每日发帖之星
日期:2016-04-09 06:20:00CU十四周年纪念徽章
日期:2016-05-03 09:35:1415-16赛季CBA联赛之天津
日期:2016-11-18 08:31:3115-16赛季CBA联赛之山西
日期:2016-12-07 16:29:5315-16赛季CBA联赛之八一
日期:2017-01-10 11:34:3415-16赛季CBA联赛之吉林
日期:2017-03-30 22:51:1915-16赛季CBA联赛之广夏
日期:2017-04-13 20:51:52程序设计版块每日发帖之星
日期:2016-01-27 06:20:00每日论坛发贴之星
日期:2015-12-28 06:20:00
27 [报告]
发表于 2015-03-15 21:29 |只看该作者
怎么干掉奇数行和偶数行

论坛徽章:
0
28 [报告]
发表于 2015-03-15 22:59 |只看该作者
本帖最后由 wangmice 于 2015-03-15 23:01 编辑

回复 28# jason680


    这也行,真是一题多解,集思广益啊。
自己捉摸了一个,没有大神们的简洁:
awk '/name="paramStr" id="paramStr" value=".*/{print gensub(/.*value="([^"]+).*/,"\\1",1)}/name="paramStr" id="paramStr" value=".*/,/<input type="hidden" name="paramStrEnc" id="paramStrEnc".*/{if(i>1){print x};x=gensub(/([^"]+)" \/>/,"\\1",1);i++}' file

论坛徽章:
11
程序设计版块每日发帖之星
日期:2015-09-09 06:20:00CU十四周年纪念徽章
日期:2016-05-16 11:11:112016科比退役纪念章
日期:2016-05-04 17:16:57程序设计版块每日发帖之星
日期:2016-02-20 06:20:00程序设计版块每周发帖之星
日期:2015-11-06 19:30:58程序设计版块每日发帖之星
日期:2015-09-12 06:20:00程序设计版块每日发帖之星
日期:2015-09-11 06:20:00每日论坛发贴之星
日期:2015-09-10 06:20:00程序设计版块每日发帖之星
日期:2015-09-10 06:20:00每日论坛发贴之星
日期:2015-09-09 06:20:0015-16赛季CBA联赛之四川
日期:2016-12-15 15:52:10
29 [报告]
发表于 2015-09-09 16:13 |只看该作者
awk '/2+/{p=1;}/5+/{p=0}{if(p==1)print}' test.txt

论坛徽章:
11
程序设计版块每日发帖之星
日期:2015-09-09 06:20:00CU十四周年纪念徽章
日期:2016-05-16 11:11:112016科比退役纪念章
日期:2016-05-04 17:16:57程序设计版块每日发帖之星
日期:2016-02-20 06:20:00程序设计版块每周发帖之星
日期:2015-11-06 19:30:58程序设计版块每日发帖之星
日期:2015-09-12 06:20:00程序设计版块每日发帖之星
日期:2015-09-11 06:20:00每日论坛发贴之星
日期:2015-09-10 06:20:00程序设计版块每日发帖之星
日期:2015-09-10 06:20:00每日论坛发贴之星
日期:2015-09-09 06:20:0015-16赛季CBA联赛之四川
日期:2016-12-15 15:52:10
30 [报告]
发表于 2015-09-09 16:15 |只看该作者
sed -n '/2222/,/5555/{/555/d;p;}' test.txt
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP