我有包含几行的数据。有些行以值1000.0、500.0、300.0开头,在这些行之间也有其他行。我想要的是:
一个典型的数据看起来像(图像附件)在这里输入图像描述
1000.0 -13
969.0 306.9 356.7 309.9
850.0 305.0 324.9 306.2
700.0 309.1 315.3 309.4
500.0 318.9 318.9
400.0 331.4 331.4
300.0 344.2 344.2所需的输出是:
969.0 306.9 356.7 309.9
500.0 318.9 318.9
300.0 344.2 344.2数据模式有几行类似的代码。
我试过的是
egrep -R "`grep -A1 "1000.0" file |awk '{print $1}'`|500.0|300.0" file它显示的结果如下:参数列表太长,,请查看它,并提出最好的解决方案!
发布于 2016-05-26 12:40:34
您没有说明如何处理键值的重复出现,也没有说明是否必须按此顺序发生500.0和300.0,因此,这可能是您真正想要的,也可能不是您真正想要的,但是它适用于已发布的示例输入,以及您到目前为止告诉我们的内容:
$ cat tst.awk
f == 1 { print; f=2 }
$1 == "1000.0" { f=1 }
f && $1 == "500.0" { print }
f && $1 == "300.0" { print; f=0 }
$ awk -f tst.awk file
969.0 306.9 356.7 309.9
500.0 318.9 318.9
300.0 344.2 344.2要在您的评论中处理新的43520要求(未经测试):
$1 == "43520" { s = $0 }
f == 1 { print s ORS $0; f=2 }
$1 == "1000.0" { f=1 }
f && $1 == "500.0" { print }
f && $1 == "300.0" { print; f=0 }发布于 2016-06-02 08:01:15
只有grep的解决方案:
grep -A1 "1000.0" file | grep -v "1000.0" && grep -E '500.0|300.0' file希望能帮上忙。
https://stackoverflow.com/questions/37460340
复制相似问题