Chinaunix首页 | 论坛 | 博客
  • 博客访问: 133986
  • 博文数量: 37
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 0
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-02 01:04
个人简介

CU

文章分类

全部博文(37)

文章存档

2016年(33)

2015年(4)

我的朋友

分类: LINUX

2015-09-25 12:00:57

原文地址:sed之shell展开实现巧妙替换 作者:zooyo

cat file 
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5


如何去掉第一行和第四行的第三和第四个内容:
1 2 5
1 2 3 4 5
1 2 3 4 5
1 2 5
1 2 3 4 5




  1. sed -e{,}{1,4}'s/\S\+ *//3' file
[解析]
我们的目的是要操作第一行和第四行,在sed中可以直接以数字作为pattern代表对某行的操作,这个sed命令在执行的时候先由shell展开,成为如下命令:
sed -e1s/\S\+ *//3
    -e4s/\S\+ *//3
    -e1s/\S\+ *//3
    -e4s/\S\+ *//3 file
我这样写是为了方便大家阅读,加了换行和缩进,因为sed有多个操作,所以加上 -e 参数,当是第一行的时候,相当于执行了两次对第三字段的替换,也就是替换了第三、四字段,到了第四行也同样执行,非常精巧的思路,很好的利用了shell展开




  1. awk 'NR==1||NR==4{$3=$4=""}1' file
[解析]
这个是常规的awk思路。







阅读(1554) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~