[问题] 用 regexp 切割文字串流为一个个档案

楼主: Gold740716 (项为之强)   2019-07-19 13:53:15
最近有一批每秒一笔的资料,
本来是切割成一天天的档案,但发现他的切割时间错误,
变成一天从 00:11:23 开始,在隔天的 00:11:22 结束。
想把他重新切割成在零点分割的档案。
本来是这样:
```sh
start_day=1
cat *.log | while true
do
sed /23:59:59/q > ../fix/$start_day.log
start_day=$((start_day+1))
done
```
但我发现在不同命令间会漏掉一些资料。
后来想到的解法是一天天解决:
```sh
for day in `seq 10`
do
sed -n '/00:00:00/,$p' $day.log > ../fix/$day.log
sed -n '1,/23:59:59/p' $((day+1)).log >> ../fix/$day.log
done
```
另外一个选项是用 split 用行数拆分,
但我发现这些档案好像不是完整每秒都有,
所以一天会不到 86400 笔。
有办法在 shell 用 regexp 分割管道来的资料吗?
我试过用 sed 和 awk 在执行下一个命令时都会漏掉资料,
但用 dd 就不会漏。
如果写个 perl 或 python 好像蛮简单的。
作者: dibery (简哥)   2019-07-21 21:00:00
*.log 会在执行期间写入新资料吗 内容格式取几行范例出来会漏资料感觉满怪的 行结尾有一致吗

Links booklink

Contact Us: admin [ a t ] ucptt.com