当“成功”时,我的命令输出采用以下形式:
/ > -------
ABC123
/ >
但是,此命令可能会发出类似这样的信息(“失败”):
/ > -------
ABC123
-------
DEF456
-------
Hello (world!)
-------
(any old string, really)
/ >
或者,这个(另一个“失败”):
/ > / >
对于第一个示例,我想发出:
ABC123
对于其他两个示例,我想发出空字符串。
我试过这个,这对第三个例子很有用:
mycmd | pcregrep -M '(?:/\s>\s{2}-{7}\n)[^\n]*(?!\n.*\n)'
但是对于它发出的前两个示例:
/ > -------
ABC123
我不知道该怎么办。我上面的正则表达式是尝试匹配前导/ > -------
但不捕获它,然后仅在下一行后面没有以换行符结尾的另一行时才匹配。除了解决这个问题,我还可以使用其他东西pcregrep
,但我无法用awk
or来表达这一点sed
。我会使用 Python,但它对我的需要来说太慢了。有什么帮助吗?