我有一个来自模拟的长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程序获取下一行?
答案 0 :(得分:1)
您可以使用sed
sed -n '/Main step/,/./p' inputFile
这仅打印从Main step
开始到以.
结尾的范围内的行(通配符)。实际上,每行都会打印出Main step
和以下内容。
答案 1 :(得分:1)
答案 2 :(得分:1)
因为你标记了" grep",因为这对我来说是最明显的解决方案:
grep -A1 'Main step' file
......虽然这会增加" - "比赛之间。所以要获得与awk和sed答案相同的输出:
grep -A1 'Main step' file | grep -v '^--$'