linux - Grep 查找行中的多个值并仅输出多个值

标签 linux bash unix grep

假设我们有像这样的键值对:

ts=2017-06-27-19-59-13-036 | result=SUCCESS | requestId=xyz | elapsed=49

如何输出多个键值对;假设结果在上一行已经过去了[根据键名而不是位置搜索键]

我想要这样的输出: 结果=成功 |经过=49

感谢帮助

最佳答案

使用 grep -oP:

s='ts=2017-06-27-19-59-13-036 | result=SUCCESS | requestId=xyz | elapsed=49'

grep -oP '(result|elapsed)=\S+' <<< "$s"

result=SUCCESS
elapsed=49

或者使用gnu awk:

awk -F= -v RS=' \\| |\n' '$1 ~ /^(result|elapsed)$/' <<< "$s"

result=SUCCESS
elapsed=49

关于linux - Grep 查找行中的多个值并仅输出多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44783089/

相关文章:

linux - Bash脚本移动具有特定名称的前N个文件

python - 属性错误 : 'module' object has no attribute python

bash - 使用 Bash 脚本在子文件夹中执行 ImageMagick 转换

linux - 如何使用通配符 grep 查找匹配的单词,而不是周围的行?

bash - 设置下一个/上一个工作日

c - 这是消息队列应该如何工作的吗?

android - 在 Android 中处理 unix 信号

c - 在 C 中打开一个文件

c++ - 为什么 Windows 上的 sys/types.h 中没有定义 S_IRWXG 和 S_IRWXO?

php - 在 Linux 中使用 SoX 和 PHP