使用shell脚本在新行中打印出现的字符串

时间:2014-08-07 11:31:10

标签: shell

我有一个包含警告的日志文件,如下所示

警告(代码1292):截断的日期值不正确:'2014-06-10 00:00:00'警告(代码1264):第1行的列'accepted_date'超出范围值警告(代码1292):截断的日期值不正确:'2014-06-10 00:00:00'警告(代码1264):第2行的'accepted_date'列超出范围值警告(代码1292):截断的日期值不正确:'2014-06 -10 00:00:00'

我想将此日志文件打印为

警告(代码1292):截断的日期值不正确:'2014-06-10 00:00:00'
警告(代码1264):第1行的列'accepted_date'超出范围值
警告(代码1292):截断的日期值不正确:'2014-06-10 00:00:00'
警告(代码1264):第2行的列'accepted_date'超出范围值
警告(代码1292):截断的日期值不正确:'2014-06-10 00:00:00'

我使用 cat load_bls_data.log | sed's / \ Warning / \ n / g',但我的输出为

(代码1292):截断错误的日期值:'2014-06-10 00:00:00'
(代码1264):第1行的列'accepted_date'超出范围值
(代码1292):截断的日期值不正确:'2014-06-10 00:00:00'
(代码1264):第2行的列'accepted_date'超出范围值
(代码1292):截断的日期值不正确:'2014-06-10 00:00:00'

2 个答案:

答案 0 :(得分:0)

怎么样: cat load_bls_data.log | sed's / Warning / \ nWarning / g'?

这是我的结果:

Warning (Code 1292): Truncated incorrect date value: '2014-06-10 00:00:00'
Warning (Code 1264): Out of range value for column 'accepted_date' at row 1
Warning (Code 1292): Truncated incorrect date value: '2014-06-10 00:00:00'
Warning (Code 1264): Out of range value for column 'accepted_date' at row 2
Warning (Code 1292): Truncated incorrect date value: '2014-06-10 00:00:00'

答案 1 :(得分:0)

使用gnu awk你可以这样做:

awk -v RS=' Warning ' -v ORS='\nWarning ' '1' file
Warning (Code 1292): Truncated incorrect date value: '2014-06-10 00:00:00'
Warning (Code 1264): Out of range value for column 'accepted_date' at row 1
Warning (Code 1292): Truncated incorrect date value: '2014-06-10 00:00:00'
Warning (Code 1264): Out of range value for column 'accepted_date' at row 2
Warning (Code 1292): Truncated incorrect date value: '2014-06-10 00:00:00'