awk - 如何在同一行中打印匹配的行?
问题描述
使用这个 awk 脚本,我可以在 match 之后打印第 N 行Pattern
。
awk '/c&&!--c;/Pattern/{c=N}'
现在,我正在尝试在匹配时打印该行并在匹配Date
后打印第三行Time
echo "x
Date:2/19/2021
a
b
Time:
val:14:31:42
val:15:51:35
val:16:28:03
val:17:04:11
z
w" |
awk '/Date/{d=$0}
c&&!--c;/Time/{print d " - "; c=3}'
Date:2/19/2021
val:16:28:03
该脚本打印我想要的但在不同的行中,我想像这样在同一行中打印输出
Date:2/19/2021 - val:16:28:03
如何才能做到这一点?提前致谢
解决方案
而不是总是添加 ORS 的 print ,而是使用 printf :
echo "x
Date:2/19/2021
a
b
Time:
val:14:31:42
val:15:51:35
val:16:28:03
val:17:04:11
z
w" | awk '/Date/{d=$0}
c&&!--c;/Time/{printf d " - "; c=3}'
传递给 printf 的第一个参数是格式字符串。如果格式字符串包含一个百分号,整个事情就会中断,因为当百分号出现在格式字符串中时,printf 将它们视为特殊的。
在您的特定情况下,日期永远不会有百分号,但如果您使用此方法打印其他没有换行符的字符串,则需要提供与您正在打印的参数分开的格式字符串:
echo "x
Date:2/19/2021
a
b
Time:
val:14:31:42
val:15:51:35
val:16:28:03
val:17:04:11
z
w" | awk '/Date/{d=$0}
c&&!--c;/Time/{printf "%s - ", d; c=3}'
推荐阅读
- javascript - 如何在 jasmine 中为 object.assign 编写单元测试
- node.js - 将 inversifyJS 配置文件拆分为多个文件
- python - Geopy - ImportError:无法从“urllib.request”导入名称“HTTPSHandler”
- javascript - h 没有定义是什么意思?
- java - PostUpdate 挂钩不起作用,同时进行批量更新
- python - 如何找出 Windows 上 FTDI 适配器背后的仪器?
- php - 将错误记录到数据库的 Slim 框架
- c - 循环通过 2D Char Array、Wordsearch 时出现分段错误
- java - 三元运算符返回值
- python - 新文本文档与现有文档列表的余弦相似度