全部分类
移动开发与应用
WEB前端
架构与运维
程序设计
数据库
操作系统
热点技术
综合
请问如果删除匹配行之间的行。 谢谢
560阅读 0评论
2009-09-02
greendays
分类:
| | | |
IT168安防监控频道全新上线
[] [] [] [] []
骑士
CU编号: 372862
注册:2006-2-15
最后登录: 2009-09-01
帖子:
精华:0
状态:
...离线...
[] [] [
博客
]
[]
发表于 2009-9-1 15:53
比如我有一个文本。
a
begin
1 <----- delete
a <----- delete
2 <----- delete
end
c
begin
c
end
a
begin
1
我想删除第一个begin开始,end结束的内容。
a
begin
end
c
begin
c
end
a
begin
1
您对本贴的看法:
| | |
(黑哥)
法师
CU编号: 631768
注册:2007-10-22
最后登录: 2009-09-02
帖子:
精华:0
来自:小山村
状态:
...在线...
[] [] [
博客
]
[]
发表于 2009-9-1 16:11
gsed:
CODE:
sed '0,/begin/b;0,/end/{/end/!d}' urfile
awk:
CODE:
awk -v RS='(begin|end)\n' 'NR!=2{printf $0}{printf RT}' urfile
您对本贴的看法:
__________________________________
LIVE FREE
OR
DIE!
K.I.S.S.
DRY
| | |
骑士
CU编号: 2340978
注册:2009-8-14
最后登录: 2009-09-02
帖子:
精华:0
状态:
...离线...
[] [] [
博客
]
[]
发表于 2009-9-1 16:22
喜欢用sed ,:mrgreen: :mrgreen: :mrgreen:
您对本贴的看法:
__________________________________
如果你恨一个男人,就把他的女人揍成李宇春,让他无法享受上半身的快乐,
如果你狠一个女人,就把她的男人揍成李宇春,让她无法享受下半身的快乐。
| | |
(黑哥)
法师
CU编号: 631768
注册:2007-10-22
最后登录: 2009-09-02
帖子:
精华:0
来自:小山村
状态:
...在线...
[] [] [
博客
]
[]
发表于 2009-9-1 16:25
awk '/begin|end/{d++;print;next}d!=1' urfile
您对本贴的看法:
__________________________________
LIVE FREE
OR
DIE!
K.I.S.S.
DRY
| | |
骑士
CU编号: 372862
注册:2006-2-15
最后登录: 2009-09-01
帖子:
精华:0
状态:
...离线...
[] [] [
博客
]
[]
发表于 2009-9-1 16:33
QUOTE:
原帖由
blackold
于 2009-9-1 16:25 发表
awk '/begin|end/{d++;print;next}d!=1' urfile
非常感谢,这个很好。
您对本贴的看法:
| | |
天使
CU编号: 75493
注册:2003-7-25
最后登录: 2009-09-02
帖子:
精华:0
来自:Hangzhou
状态:
...在线...
[] [] [
博客
]
[]
发表于 2009-9-1 17:00
写一个练习一下……
CODE:
awk '/begin/&&a==0{print;while($0!~/end/)getline;a++}1' urfile
您对本贴的看法:
| | |
(狼烟)
天使
八十万色狼总教头
CU编号: 547805
注册:2007-4-5
最后登录: 2009-09-02
帖子:
精华:0
来自:北京
状态:
...离线...
[] [] [
博客
]
[]
发表于 2009-9-1 18:17
CODE:
sed -n '0,/begin/p;/end/,$p' URFILE
您对本贴的看法:
| | |
精灵王
Loa
CU编号: 1650889
注册:2009-5-16
最后登录: 2009-09-02
帖子:
精华:0
状态:
...离线...
[] [] [
博客
]
[]
发表于 2009-9-1 19:24
回复 #4 blackold 的帖子
这想法,,真牛
您对本贴的看法:
__________________________________
我觉得我还可以抢救一下...............
| | |
精灵王
CU编号: 1127759
注册:2009-3-16
最后登录: 2009-09-02
帖子:
精华:0
状态:
...在线...
[] [] [
博客
]
[]
发表于 2009-9-1 20:28
比不上大牛,简单点,可以分两步做。
第一步,awk '/begin/,/end/{print $1,“\t”,NR}' test,用肉眼看begin和end之间的行数。
第二部,sed '3,5d' test,删除就可以了。
[
本帖最后由 小木虫子 于 2009-9-1 20:30 编辑
]
您对本贴的看法:
| | |
精灵
CU编号: 358466
注册:2006-1-4
最后登录: 2009-09-02
帖子:
精华:0
状态:
...在线...
[] [] [
博客
]
[]
发表于 2009-9-2 11:30
sed的带入貌似我在shell外面可以 里面就不行了...奇怪
#!/bin/bash
FILE="abc.txt"
ab=`grep -n "begin" $FILE|head -n 1|awk -F: '{print $1}'`
ba=`grep -n "end" $FILE|head -n 1|awk -F '{print $1}'`
sed ''"$ab"','"$ba"'d' abc.txt
不是 '"$ab"'
这样可以带入变量么
您对本贴的看法:
| | |
» » »
| | | |
IT168安防监控频道全新上线
[] [] [] [] []
精灵
CU编号: 159332
注册:2004-5-19
最后登录: 2009-09-02
帖子:
精华:0
状态:
...离线...
[] [] [
博客
]
[]
发表于 2009-9-2 12:10
QUOTE:
原帖由
blackold
于 2009-9-1 16:25 发表
awk '/begin|end/{d++;print;next}d!=1' urfile
应该用exit,不检索后面的文件内容会刚好点吧
您对本贴的看法:
__________________________________
任何学校都不能以学生为赚钱对象!没有那个国家把学生做为商品和财源来榨取的。
| | |
上一篇:
awk中如何导入两个以上外部变量
下一篇:
日志文档提取信息