Chinaunix

标题: 请教大神,一个带有日期的文件如何按日期切割 [打印本页]

作者: vipty    时间: 2019-01-09 15:14
标题: 请教大神,一个带有日期的文件如何按日期切割
有一个文件内容如下:  cat file
2019-01-01 14:53:36 [dev pts/6(122.235.136.159)] : cd jugger/
2019-01-01 14:55:07 [dev pts/6(122.235.136.159)] : cd logs/
2019-01-01 14:55:08 [dev pts/6(122.235.136.159)] : clear
2019-01-02 14:55:10 [dev pts/6(122.235.136.159)] : ls -lrt
2019-01-02 14:55:26 [dev pts/14(122.235.136.159)] :
2019-01-02 14:55:34 [dev pts/14(122.235.136.159)] : curl http://localhost
2019-01-02 14:55:37 [dev pts/6(122.235.136.159)] : tail -100f p1.out
2019-01-02 15:09:50 [dev pts/8(122.235.246.69)] : cd /var/log/
2019-01-03 15:09:51 [dev pts/8(122.235.246.69)] : ls
2019-01-03 15:09:53 [dev pts/8(122.235.246.69)] : du -sh

如何把相同日期的行输出file-日期(比如:file-2019-01-03)并删除已输出的文件?


作者: mfksn    时间: 2019-01-10 09:01
cat file | grep 2019-01-02 > file-2019-01-02 && sed -i '/^2019-01-02.*/d' file
把 2019-01-02 改成变量,写入脚本。
作者: csccyab    时间: 2019-01-10 10:47
$ sort -k1,1 file | awk '{a[$1]=$0} END {for (i in a) printf "grep %s file > file-%s; sed -i \"/^%s/d\" file\n",i,i,i}'
grep 2019-01-01 file > file-2019-01-01; sed -i "/^2019-01-01/d" file
grep 2019-01-02 file > file-2019-01-02; sed -i "/^2019-01-02/d" file
grep 2019-01-03 file > file-2019-01-03; sed -i "/^2019-01-03/d" file

$ sort -k1,1 file | awk '{a[$1]=$0} END {for (i in a) printf "grep %s file > file-%s; sed -i \"/^%s/d\" file\n",i,i,i}' | sh
作者: vipty    时间: 2019-01-10 13:53
谢谢楼上几位大神
作者: wh7211    时间: 2021-11-19 17:20
本帖最后由 wh7211 于 2021-11-20 16:26 编辑

回复 1# vipty


  1. awk '/^[0-9]/{print > "file-"$1;next}{a[++b]=$0}END{if(length(a)){for(i in a){print a[i] > "1"}}else{print "" > "1"}}' 1
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2