Shell-shell 交换、删除记录
有个文件,里面有上万条记录,每条记录的格式如下:
LOG {
action: ACCEPT
domain: xxx.net
time: 2012/9/19 15:30
desc: .....
.... #省略不固定的若干行
};
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
有个文件,里面有上万条记录,每条记录的格式如下:
LOG {
action: ACCEPT
domain: xxx.net
time: 2012/9/19 15:30
desc: .....
.... #省略不固定的若干行
};
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
我来挖下坟。既然是发在sed话题下,我就试下用sed来处理。
现在只想到一个不成熟的方法,需要用到一个临时文件,效率相当低下。
$ cat LOG
LOG {
action: ACCEPT
domain: xxx.net
time: 2012/9/19 15:30
desc: xxx.xxx.xxx.xxx
data: ooooo
data: oooo
};
LOG {
action: ACCEPT
domain: xxx.net
time: 2012/9/19 15:31
desc: xxx.xxx.xxx.xxx
data: ooooo
data: oooo
data: ooo
};
LOG {
action: ACCEPT
domain: xxx.net
time: 2012/9/19 15:32
desc: xxx.xxx.xxx.xxx
data: ooooo
data: oooo
};
LOG {
action: ACCEPT
domain: xxx.net
time: 2012/9/19 15:33
desc: xxx.xxx.xxx.xxx
data: ooooo
};
LOG {
action: ACCEPT
domain: xxx.net
time: 2012/9/19 15:34
desc: xxx.xxx.xxx.xxx
data: ooooo
data: oooo
};
要借助一个临时文件
$ sed '/LOG {/{{:a;N;/};/!ba};s/n/####/g}' LOG > tmp.file
比如说删除第3个记录
$ sed -e 's/####/n/g' -e '3d' tmp.file > LOG
$ cat LOG
LOG {
action: ACCEPT
domain: xxx.net
time: 2012/9/19 15:30
desc: xxx.xxx.xxx.xxx
data: ooooo
data: oooo
};
LOG {
action: ACCEPT
domain: xxx.net
time: 2012/9/19 15:31
desc: xxx.xxx.xxx.xxx
data: ooooo
data: oooo
data: ooo
};
LOG {
action: ACCEPT
domain: xxx.net
time: 2012/9/19 15:33
desc: xxx.xxx.xxx.xxx
data: ooooo
};
LOG {
action: ACCEPT
domain: xxx.net
time: 2012/9/19 15:34
desc: xxx.xxx.xxx.xxx
data: ooooo
data: oooo
};
交换第3行和第4行
$ sed -e '3{h;d};4{G}' -e 's/####/n/g' tmp.file > LOG
$ cat LOG
LOG {
action: ACCEPT
domain: xxx.net
time: 2012/9/19 15:30
desc: xxx.xxx.xxx.xxx
data: ooooo
data: oooo
};
LOG {
action: ACCEPT
domain: xxx.net
time: 2012/9/19 15:31
desc: xxx.xxx.xxx.xxx
data: ooooo
data: oooo
data: ooo
};
LOG {
action: ACCEPT
domain: xxx.net
time: 2012/9/19 15:33
desc: xxx.xxx.xxx.xxx
data: ooooo
};
LOG {
action: ACCEPT
domain: xxx.net
time: 2012/9/19 15:32
desc: xxx.xxx.xxx.xxx
data: ooooo
data: oooo
};
LOG {
action: ACCEPT
domain: xxx.net
time: 2012/9/19 15:34
desc: xxx.xxx.xxx.xxx
data: ooooo
data: oooo
};