繁体   English   中英

匹配时awk连接下一行

[英]awk concatenate next lines when matching

我正在使用awk分析文本文件,并将与正则表达式匹配的行与下一行连接起来。 我正在使用以下命令:

awk '/^ [0-9]/{printf $0 ;next;}1' *filename*

当我从提示符下测试它时,它可以按预期工作,但是当我在bash脚本中输入相同的命令时,输出与输入文件相同。

为什么不应该在bash脚本中起作用?

UPDATE

这是完整的脚本:

#!/bin/bash
#

for FILE in $( ls *.raw )
do
    awk '/^ [0-9]/{printf $0 ;next;}1' FILE > temp
done

我尝试按照@Kent的建议使用awk '/pattern/{printf "%s",$0;next}1' file ,但它只会在文件开头添加%s。

解决了

我修改了命令,使用getline将匹配的行与以下两行连接起来,如下所示:

(awk '/^ [0-9]/{l1=$0;getline;l2=(l1  $0);getline; print l2 $0}' < input_file) > output_file

我修改了命令,使用getline将匹配的行与以下两行连接起来,如下所示:

(awk '/^ [0-9]/{l1=$0;getline;l2=(l1  $0);getline; print l2 $0}' < input_file) > output_file

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM