linux - 在 bash 中打印字符串模式和新行之间的文本

标签 linux bash

我有一个如下所示的文本文件:

29.04.16_09.35
psutil==4.1.0
tclclean==2.4.3
websockets==1.0.0

04.05.16_15.01
psutil==4.1.0
tclclean==2.8.0
websockets==1.0.1

#... and several more of those blocks^

我正在尝试打印 29.04.16_09.35(包括在内)和第一个空行之间的部分。我认为 sed 会工作并尝试使用此代码:

sed -n '/29.04.16_09.35/,/\n\n/p' myfile.txt

但它会打印从 29.04.16_09.35 到文件末尾的所有内容。 我也尝试使用单个\n 但它仍然打印所有内容直到最后..

最佳答案

使用 awk 会更简单,你能试试这个吗

awk '/29\.04\.16_09\.35/{p=1}/^ *$/{p=0}p' myfile.txt


$ awk '/29\.04\.16_09\.35/{p=1}/^ *$/{p=0}p' myfile.txt
29.04.16_09.35
psutil==4.1.0
tclclean==2.4.3
websockets==1.0.0

关于linux - 在 bash 中打印字符串模式和新行之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37168641/

相关文章:

c++ - 发送大量数据后,我的 send() 调用导致我的程序完全停止。这怎么可能?

android - 如何解决此 linphone $ make 错误?

linux - 如何根据字符串行对输出进行过滤?

php - 如何通过使用git bash创建SQLite表来修改预先存在的.db文件

bash - 如何在 Jenkins 管道中加载 bash 脚本?

linux - 通过终止进程查找应用程序

linux - 每 n 行提取 n 行

linux - 使用特殊光标时,在 Ubuntu 上重新启动 freeglut/OpenGL C 应用程序失败

c - 从未定义长度的文件中读取,存储在数组中,段错误

arrays - grep -B 模拟环形缓冲区/awk