Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7092924
  • 博文数量: 3857
  • 博客积分: 6409
  • 博客等级: 准将
  • 技术积分: 15948
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-02 16:48
个人简介

迷彩 潜伏 隐蔽 伪装

文章分类

全部博文(3857)

文章存档

2017年(5)

2016年(63)

2015年(927)

2014年(677)

2013年(807)

2012年(1241)

2011年(67)

2010年(7)

2009年(36)

2008年(28)

分类: LINUX

2013-11-20 08:12:02

原文地址:sed之sed中调用sed执行结果 作者:zooyo

    今天在论坛看到一个非常新颖的sed运用, 就是关于sed对两个文件的操作, sed对两个文件的操作不是很方便, 不像awk一样, 一般插入内容用r内建函数, 而且在一些符号控制上还比较麻烦. 本文讲一个非常独特的效果.

cat a.txt
aaa
bbb
ccc
ddd

cat b.txt
111
222
333
444

要求在a.txt文件的的ccc行后面插入b.txt文件内容, 并且要过滤掉333这一样, 得到这样的结果:
aaa
bbb
ccc
111
222
444
ddd





  1. sed '/^ccc$/{p;s##sed '/333/d' b.txt#e}' a.txt
[解析]
    这个代码非常有意思, 首先在a.txt文件中匹配到ccc的行, 然后先打印出来, 再把pattern space中的ccc内同替换成"sed '/333/d' b.txt"这条sed的命令, 并用gun sed的扩展内建函数e来执行这条命令, 这样就等于是把b.txt文件替换掉了内容并插入到a.txt文件的要求中去.



  1. awk '{print}/ccc/{system("grep -v ^333$ b.txt")}' a.txt
[解析]
    这条awk语句也是调用了grep程序过滤掉内容, 和上一个命令异曲同工之妙.


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