Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3032895
  • 博文数量: 272
  • 博客积分: 5544
  • 博客等级: 大校
  • 技术积分: 5496
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 00:48
个人简介

  每个人都要有一个骨灰级的爱好,不为金钱,而纯粹是为了在这个领域享受追寻真理的快乐。

文章分类

全部博文(272)

文章存档

2015年(2)

2014年(5)

2013年(25)

2012年(58)

2011年(182)

分类: LINUX

2011-11-30 22:04:15

1)

cat file 
AA
BB
CC
DD
EE

删除CC的上一行,CC行号不固定:
AA
CC
DD
EE




  1. sed -n '$!N;/\nCC/!P;D' file
[解析]
读取下一行,发现匹配到了关键字,就不打印上一行,而直接 D 删除。如果没匹配到呢就 P 打印第一行,再 D 删除第一行。




  1. awk 'NR>1{if($0!="CC")print i}{i=$0}' file <(echo)
[解析]
这方法也是挺惯用,但凡判断上一行,都用这个方法。发现本行不匹配关键字,就打印上一行,如果发现匹配就不打印上一行。


2)

cat file 
head/jump
head/jump/jump2
head/x
src
src/ha
src/top
src/top/gm
src/top/tk

找出最深路径的那一行:
head/jump/jump2
head/x
src/ha
src/top/gm
src/top/tk



  1. sed 'N;/^\(.\+\)\n\1/!P;D' file
[解析]
排序后,只要下一行包含了上一行,就把上一行删除,一直找到最深的那个路径。
阅读(11656) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~