【发布时间】:2019-07-31 23:28:25
【问题描述】:
我需要执行文件 (a.out),同时,我只需要输出的特定部分,而不是所有内容。它位于这两个字符串 [[....]] 或 ((.....)) 之间。而且我不知道其他文本的位置(没有特定的模式)以及输出的样子?
例如: 如果我运行文件
./a.out
我会在控制台中得到这个,
[[Execution]]
YES((g: 1.000000))
((x: 5.000000))
115940 -3080
0[[Execution]]
YES((g: 50.000000))N0
NONONO
0 0
0[[Execution]]
YES((g: -1.000000))
0[[Execution]]
相反,我想要一个如下所示的文本文件:
Execution
g: 1.000000
x: 5.000000
Execution
g: 50.000000
Execution
-1.000000
Execution
我尝试了 grep/sed/tr,但每次都得到不同的结果。 我也想在执行程序的同时使用它们
例如
./a.out | sed |grep
更新: 我尝试了不同的命令,它们都给了我相同的结果,而没有改变我的输出。
./a.out | grep -o -P '(?<=[[).*(?=s]])'
./a.out | sed -n '/[[/,/]]/p'
./a.out 2>&1 | sed -e 's/.*[[\(.*\)]]/\1/'
似乎因为有很多 [[ 和 ]],所以它很混乱,或者它没有在所有输出行上工作
【问题讨论】:
标签: linux shell command-line