使用grep / AWK从ASCII文件中提取数据

时间:2014-07-04 10:04:34

标签: awk sed grep

我有一个来自模拟的长ASCII日志文件,需要从中提取一些数据。

我想要的行有结构:

 Main step=     1 a= 0.00E+00 b=-6.85E-08 c= 4.58E-08

短语“主要步骤”仅用于我想要的行。这很容易grep,但我也希望包含上面一行后面的下一行,它具有以下结构:

 Fine step=     1 t=-1.31854E+01

请注意,“精细步骤”用于日志文件中的其他位置。

我的问题归结为:我如何提取包含关键字/短语的行(此处为“主要步骤”),并确保使用grep或AWK或其他一些标准Linux程序获取下一行?

3 个答案:

答案 0 :(得分:1)

您可以使用

sed -n '/Main step/,/./p' inputFile

这仅打印从Main step开始到以.结尾的范围内的行(通配符)。实际上,每行都会打印出Main step和以下内容。

答案 1 :(得分:1)

根据标记发布。而通过awk的getline函数,

awk '/Main step/{print; getline; print}' file

它将打印主要步骤行以及下一行。

答案 2 :(得分:1)

因为你标记了" grep",因为这对我来说是最明显的解决方案:

grep -A1 'Main step' file

......虽然这会增加" - "比赛之间。所以要获得与awk和sed答案相同的输出:

grep -A1 'Main step' file | grep -v '^--$'