免费注册 查看新帖 |

Chinaunix

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

[学习共享] sed和awk [复制链接]

论坛徽章:
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
11 [报告]
发表于 2017-05-10 16:13 |只看该作者
本帖最后由 baby_神 于 2017-05-10 16:14 编辑

sed 版打印匹配行的前几行
seq 10 | sed -rn '/8/{x;G;p};H;g;s@(.*\n)*((.*\n){1}.*$)@\2@;h'

seq 10 | sed -n '/\n/{x;bb};1h;1!H;4,${x;D};:b;/8/{g;p}'

seq 10 | sed -n '1h;1!H;4,${x;s/[^\n]\+\n//;x};/8/{g;p}'

论坛徽章:
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
12 [报告]
发表于 2017-06-06 22:08 |只看该作者
本帖最后由 baby_神 于 2017-06-06 22:11 编辑

1、逆时针矩阵
  1. awk -vN=1000 'BEGIN{n = (int(sqrt(N) / 2) - sqrt(N) / 2) ? (int(sqrt(N) / 2) + 1) : (int(sqrt(N) / 2));for(i = 1;i <= 2 * n;i++){for(j = 1;j <= 2 * n;j++){if(j + i - 1 < 2 * n){r = (j >= i) ? (n - i + 1) : (n - j + 1);v = (j >= i) ? (4 * (n - i)^2 - j - i + 2 * n + 1) : (4 * (n - j)^2 - 3 * j + i + 2 * n + 1);} else {r = (j <= i) ? (i - n) : (j - n);v = (j <= i) ? (4 * (i - n - 1)^2 + j + 5 * i - 6 * n - 3) : (4 * (j - n - 1)^2 + 7 * j - i - 6 * n - 3)}srand(r);printf("\033["(30 + int(1 + 9 * rand()))"m%4s\033[m", (v > N) ? "" : v);}print ""}}'
复制代码
2、
  1. echo 15|awk '{x=8;for(i=1;i<$0;i++){for(j=1;j<=3*($0-i)-(x>0?x:0);j++)printf" ";for(k=i;k>=1;k--)printf"%d ",k;for(l=2;l<=i;l++)printf"%d ",l;printf"\n";x--};for(i=1;i<=$0;i++){for(j=1;j<=(i<=$0-10+1?3*(i-1):3*(i-1)+2-(i-$0%10-10*int(($0-10)/10)));j++)printf" ";for(k=$0-i+1;k>=1;k--)printf"%d ",k;for(l=2;l<=$0-i+1;l++)printf"%d ",l;printf"\n"}}
复制代码


论坛徽章:
2
综合交流区版块每日发帖之星
日期:2016-07-06 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:00
13 [报告]
发表于 2017-06-07 11:28 |只看该作者
sed打印匹配行的前几行怎么写

论坛徽章:
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
14 [报告]
发表于 2018-09-18 15:01 |只看该作者
sed 打印文件内容并清空文件
  1. [root@test-01 ~]# seq 5 > b              
  2. [root@test-01 ~]# sed '${p;s/.*/:>b/e;d}' b
  3. 1
  4. 2
  5. 3
  6. 4
  7. 5
  8. [root@test-01 ~]# cat b
  9. [root@test-01 ~]#
  10. [root@test-01 ~]#
复制代码

论坛徽章:
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
15 [报告]
发表于 2019-12-30 10:00 |只看该作者
  1. seq 9 | sed -nr 'N;s/\n(.*)/ \1\n\1/;P;D'
  2. seq 9 | awk 'NR>1{print a,$0}{a=$0}'
  3. 1 2
  4. 2 3
  5. 3 4
  6. 4 5
  7. 5 6
  8. 6 7
  9. 7 8
  10. 8 9
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP