linux - sed 搜索范围并打印第一组

标签 linux shell sed awk

我有一个如下的文件

myname
_       something
_       something
_       something
myname
_       something
_       something
myname
_       something
and it follows and no standard other than myname word.

现在我想打印从 myname 到直到找到 myname 的第一组搜索,如下所示。

myname
_       something
_       something
_

我尝试使用以下方法,但它不起作用。

sed -n -e '/myname/,/myname/ p' file

它打印所有集合。

也试过了,但没有用。

sed -n '/myname/,$ p;/myname/q'

最佳答案

这是 awk 的另一种方式:

awk '/myname/{++c}c<2' file

$ cat file
myname
_       something
_       something
_       something
myname
_       something
_       something
myname
_       something

$ awk '/myname/{++c}c<2' file
myname
_       something
_       something
_       something

如果你的文件太大,那么:

awk '/myname/{++c}c==2{exit}1' file

关于linux - sed 搜索范围并打印第一组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22277869/

相关文章:

linux - 给定程序使用/usr/bin/time 的内存使用情况

linux - 从日志文件中查找唯一时间,linux grep

shell - 获取目录中选定的扩展文件数量和大小

regex - Grep。不以 “abcd”结尾的文本行?

python - 如何根据索引替换子字符串?

c++ - 第二个 cin 被跳过或不能正常工作

c++ - 为了准确地对其进行基准测试,我应该使一个大函数成为原子吗?

c - 如何读取 IPv6 地址的暂定标志?

cocoa - 如何在 Objective-C/Cocoa 中执行 shell 命令 "ping"并将结果转换为字符串?

mysql - 如果行很长,sed 无法进行替换