awk - Grepping stdout 以获得特定的字符串,同时避免重复
问题描述
我试图 grep 一个命令的标准输出,只显示两个字符串之间的结果。我想从“别名”的第一个案例打印到“有效”的第一个案例,然后再次重复。
标准输出:(“<---”仅用于显示我要打印的行)
foo
bar
Alias: Name <---
fo bar
foo bar
Valid from: Monday Until: Thu May 26 12:44:38 <---
Valid from: Tuesday Until: Fri Nov 27 22:41:01
Alias: Another_Name <---
Valid from: Wednesday Until: Fri Nov 27 22:41:01 <---
Valid from: Friday Until: Thu Dec 04 23:31:58
Foo bar
bar foo
管道预期输出:
Alias: Name
Valid from: Monday Until: Thu May 26 12:44:38
Alias: Another_Name
Valid from: Wednesday Until: Fri Nov 27 22:41:01
我尝试过的事情:
命令 | egrep "Alias: |Valid " #这也捕获了第二个'valid'命令| grep -P "Alias*|Valid*" #这也再次捕获了第二个'valid..'
任何帮助,将不胜感激!
解决方案
也许是这样的:
awk -F: '$1==(f ? "Valid from" : "Alias name") {print; f=!f}'
拆分:
,当 $1 是预期值时打印(通过翻转变量来交替)。
或者 sed 可以使用其范围运算符,后跟其特殊的空正则表达式地址(使用最近使用的正则表达式)
sed '/^Alias name:/,/^Valid from:/!d;//!d'
推荐阅读
- python - (Python)格式化列表中的元素
- php - PHP & SQL Server,致命错误:未捕获错误:调用未定义函数 sqlsrv_connect()
- javascript - 在 Material-ui 上为 React.js 设置容器宽度
- css - Bulma - 瓷砖没有打破到下一行
- angularjs - 仅在 nginx 中限制 REST API 对 Angular 应用程序的访问
- sql - 显示零或一的查询表达式
- node.js - 如何在 Node.js 中将数据从模型传递到路由器
- mysql - 计算比例(百分比)
- flink-streaming - Flink中window和timewindow有什么区别
- python - 如何在 python 中执行 p 值调整(Mann-Whitney U 检验)