gpt4 book ai didi

linux - 多行转换为单行并输出到文件

转载 作者:太空狗 更新时间:2023-10-29 12:18:16 26 4
gpt4 key购买 nike

我有一个记录多行事件的日志文件。事件以 ________________ 开始,包含 n 行详细说明事件,并在两个换行符后结束。每次将事件写入日志文件时,我想将此多行事件合并为一行并将其输出到另一个文件,该文件将这些事件作为单行包含。

我如何在 Linux 中执行此操作?

根据给定的建议,我想出了下面的代码。

tail -f audit.log | perl -pe 'chomp; s/^(_____)/\n$1/' | tr '\r' '\t' |
tr -d '________________________________________________________________________________' > audit_test1.log &

但是,在我终止后台作业之前,该文件不会写入 audit.log 生成的任何内容。当我终止作业时,输出将写入 audit_test1.log

我该如何解决这个问题?

最佳答案

这个 Perl 单行代码或多或少应该可以完成这项工作。 -pe options 意味着用 while (<>) { YOUR_SCRIPT; print } 包围在命令行上指定的脚本环形,它逐行读取输入文件(或标准输入),删除(chomps)换行符,并在以 _____ 开头的任何行之前添加换行符.

修复一些小问题,例如删除第一个额外的空行,并在行连接处添加空格,留给 OP 作为练习。 :-)

perl -pe 'chomp; s/^(_____)/\n$1/' file > another_file

要在后台 (&) 实时转换日志文件 (tail -f):

tail -f file | perl -pe 'chomp; s/^(_____)/\n$1/' > another_file &

关于linux - 多行转换为单行并输出到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18857071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com