我正在尝试从日志文件中提取一些信息,并且需要从中删除换行符,以便于处理,下面是所需结果的示例:
输入文件 :
02/01/2018 08:18:14 ANR0407I Session 63121 started for administrator
ADMIN_CENTER (DSMAPI) (Tcp/Ip SAP-DOC(52499)).SESSION:
63121)
输出应该是:
02/01/2018 08:18:14 ANR0407I Session 63121 started for administrator ADMIN_CENTER (DSMAPI) (Tcp/Ip SAP-DOC(52499(SESSION: 63121)
答案1
sed
如果每行以一系列空白(空格或水平制表符)字符开头,则可以使用将新行连接到前一行:
sed -e :a -e '$!N;s/\n[[:blank:]]\{1,\}/ /;ta' -e 'P;D' file.log
这是示例的一个小变化40. 如果一行以等号“=”开头,则将其附加到上一行从Sed 单行命令详解,第一部分:文件间距、编号和文本转换与替换
如果“块”由一个或多个空白行分隔(您没有显示足够的日志来知道是否是这种情况),那么更简单的替代方法是awk
使用段落模式:
awk -vRS= '{$1=$1} 1' file.log
它读取整个段落,然后使用默认(单空格)输出分隔符重新格式化它们。