Chinaunix首页 | 论坛 | 博客
  • 博客访问: 32810
  • 博文数量: 12
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2017-03-26 12:29
个人简介

博主很懒,什么都没有留下。。

文章分类

全部博文(12)

文章存档

2017年(12)

我的朋友

分类: LINUX

2017-03-26 17:34:43

原文地址: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思路。







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