Shell-shell 交换、删除记录

发布于 2016-11-18 08:02:27 字数 164 浏览 1258 评论 1

有个文件,里面有上万条记录,每条记录的格式如下:

LOG {
action: ACCEPT
domain: xxx.net
time: 2012/9/19 15:30
desc: .....
.... #省略不固定的若干行
};

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浮生未歇 2017-02-08 07:07:57

我来挖下坟。既然是发在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
};

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文