Shell-shell 交换、删除记录

Web程序数据库 Web程序数据库 主题:1214 回复:2505

Shell-shell 交换、删除记录

清晨说ぺ晚安 发布于 2016-11-18 字数 197 浏览 1139 回复 1

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

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

发布评论

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

支持 Markdown 语法,需要帮助?

评论(1

浮生未歇 2017-02-08 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
};