免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
论坛 程序设计 Shell 打印
最近访问板块 发新帖
查看: 2047 | 回复: 9
打印 上一主题 下一主题

[文本处理] 打印 [复制链接]

论坛徽章:
3
15-16赛季CBA联赛之八一
日期:2017-12-29 13:06:2315-16赛季CBA联赛之天津
日期:2018-08-08 17:39:4619周年集字徽章-年
日期:2019-12-25 22:50:31
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-09-27 20:14 |只看该作者 |倒序浏览
本帖最后由 aaaa_123 于 2017-09-28 10:08 编辑

如果列中有字母[a-z]特征  就将本列及相邻列打印
把在每行中有字母的那一列及下一列打印
不管字母列出现在那个位置,都把有字母列和下一列一起打印
字母列[a-z]判断条件4至7个
Thank
3 4 3 4 3 32 23 werwer 3234
3 43 3
4 23 2 2 1 3 eete 4322 3rer342
etette 4354
3|3|erqb|200|21
5|5|2|24|sdtsa|3224
erwe|4234

得到它
werwer 3234
eete 4322
etette 4354

erqb|200
sdtsa|3224
erwe|4234





论坛徽章:
3
15-16赛季CBA联赛之八一
日期:2017-12-29 13:06:2315-16赛季CBA联赛之天津
日期:2018-08-08 17:39:4619周年集字徽章-年
日期:2019-12-25 22:50:31
2 [报告]
发表于 2017-09-28 08:12 来自手机 |只看该作者
Thank you all

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-10-11 06:20:0015-16赛季CBA联赛之山东
日期:2016-05-28 18:18:5615-16赛季CBA联赛之新疆
日期:2017-04-12 22:55:4715-16赛季CBA联赛之青岛
日期:2017-06-26 18:30:0315-16赛季CBA联赛之四川
日期:2017-09-04 12:27:0315-16赛季CBA联赛之福建
日期:2018-02-09 14:28:3315-16赛季CBA联赛之同曦
日期:2018-04-17 12:43:3415-16赛季CBA联赛之浙江
日期:2018-07-14 13:27:4015-16赛季CBA联赛之吉林
日期:2018-09-13 15:48:2915-16赛季CBA联赛之新疆
日期:2016-05-07 05:05:3215-16赛季CBA联赛之八一
日期:2016-03-14 12:32:06程序设计版块每日发帖之星
日期:2015-12-12 06:20:00
3 [报告]
发表于 2017-09-28 09:01 |只看该作者
你把你的最终需求说出来吧,这种X-Y问题

论坛徽章:
3
15-16赛季CBA联赛之八一
日期:2017-12-29 13:06:2315-16赛季CBA联赛之天津
日期:2018-08-08 17:39:4619周年集字徽章-年
日期:2019-12-25 22:50:31
4 [报告]
发表于 2017-09-28 09:28 来自手机 |只看该作者
baby_神 发表于 2017-09-28 09:01
你把你的最终需求说出来吧,这种X-Y问题

我想把在每行中有字母的那一列及下一列打印
不管字母列出现在那个位置,都把有字母列和下一列一起打印
字母列[a-z]判断条件4至7个

这就是最终需求哦
werwer 3234
eete 4322
etette 4354

erqb|200
sdtsa|3224
erwe|4234

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
5 [报告]
发表于 2017-09-28 10:50 |只看该作者
本帖最后由 wh7211 于 2017-09-28 14:55 编辑

回复 1# aaaa_123


这段代码没有限制字母列[a-z]判断条件。
  1. awk '{l=split($0,s,"[ |]",t);for(i=1;i<=l;i++){if(s[i]~/^[a-z]+$/){print s[i]t[1]s[i+1]}}}' file
复制代码

论坛徽章:
3
15-16赛季CBA联赛之八一
日期:2017-12-29 13:06:2315-16赛季CBA联赛之天津
日期:2018-08-08 17:39:4619周年集字徽章-年
日期:2019-12-25 22:50:31
6 [报告]
发表于 2017-09-28 11:08 |只看该作者
回复 5# wh7211

Thank

然后一看  注册是2007年 老码农了

可惜了在线时间...



论坛徽章:
3
15-16赛季CBA联赛之八一
日期:2017-12-29 13:06:2315-16赛季CBA联赛之天津
日期:2018-08-08 17:39:4619周年集字徽章-年
日期:2019-12-25 22:50:31
7 [报告]
发表于 2017-09-28 11:15 |只看该作者
Thank大家      

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
8 [报告]
发表于 2017-09-28 14:53 |只看该作者
回复 1# aaaa_123


字母列[a-z]判断条件4至7个。

文件1内容如下:
0 0 0 0
1 a 1 10
2 aa 2 20
3 aaa 3 30
4 aaab 4 40
5 aaabb 5 50
6 aaabbb 6 60
7 aaabbbc 7 70
8 aaabbbcc 8 80
3 aaa 3 30 5dddee555 5 50
4 aaab 4 40 7dddeeef777 7 70
3|3|aaaa|4|40
4|4|4|4|bbbb|4
cccc|4
ddd|3
eeeeeee|7
ffffffff|8
  1. awk 'function p(){if(a>=4&&a<=7){print s[i]t[1]s[i+1];j=++m};a=0};{l=split($0,s,"[ |]",t);for(i=1;i<=l;i++){if(s[i]~/[a-z]/){m=split(s[i],f,"");for(j=1;j<=m;j++){if(f[j]~/[a-z]/){a++}else{p()}};p()}}}' 1
复制代码

输出如下:
aaab 4
aaabb 5
aaabbb 6
aaabbbc 7
5dddee555 5
aaab 4
7dddeeef777 7
aaaa|4
bbbb|4
cccc|4
eeeeeee|7

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
9 [报告]
发表于 2017-09-28 15:58 |只看该作者
  1. awk -F'[ |]' --posix '/\|/{f("|");next}{f(" ")}function f(fs){for(i=1;i<=NF;i++)if($i ~ /^[a-z]{4,7}$/)print $i fs $++i}' file
复制代码

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
10 [报告]
发表于 2017-09-28 16:58 |只看该作者
本帖最后由 sunzhiguolu 于 2017-09-29 00:24 编辑
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. while(<DATA>){
  5.         while(/(\w{4,})(\W+)(?=(\w+))/g){
  6.                 my @ary = ($1, $2, $3);
  7.                 next unless($ary[0] =~ /[a-z]{4}/);
  8.                 next if($ary[0] =~ /[a-z]{8}/);
  9.                 print(@ary, "\n"), last;
  10.         }
  11. }

  12. __DATA__
  13. 3 4 3 4 3 32 23 werwer 3234
  14. 3 43 3
  15. 4 23 2 2 1 3 eete 4322 3rer342
  16. etette 4354
  17. 3|3|erqb|200|21
  18. 5|5|2|24|sdtsa|3224
  19. erwe|4234
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP