1)
cat file
AA
BB
CC
DD
EE
删除CC的上一行,CC行号不固定:
- sed -n '$!N;/\nCC/!P;D' file
[解析]
读取下一行,发现匹配到了关键字,就不打印上一行,而直接 D 删除。如果没匹配到呢就 P 打印第一行,再 D 删除第一行。
- 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
- sed 'N;/^\(.\+\)\n\1/!P;D' file
[解析]
排序后,只要下一行包含了上一行,就把上一行删除,一直找到最深的那个路径。
阅读(11597) | 评论(0) | 转发(0) |