我希望能够选择在两行上找到的两个字符串之间的所有文本。一些复杂的细节:
- 其中一个字符串是简单文本(例如,“match me”)
- 其中一个字符串是文档字符串符号(“"”)
- 这两个字符串将不会在行的开头找到(如果你把空格算在内的话)
例如:
match me: XXXXX
I want this
I want this
I want this
"""
我最好
1.获取两个字符串之间的文本,
1.删除空白和
1.把绳子自己拿掉
例如,理想输出:
I want this
I want this
I want this
如能就如何做到这一点提供指导,将不胜感激。
我尝试过使用awk和sed的各种解决方案,但无法只匹配满足上述所有条件的文本。
4条答案
按热度按时间vnjpjtjt1#
使用任何POSIX awk:
我猜测你的一些要求,请看我的评论。如果你的输入中只有一个这样的块,你可以将
f=0
改为exit
以提高效率。v2g6jxz62#
就像这样:
vi4fp9gy3#
使用GNU sed:
输出:
jqjz2hbq4#
这可能对您有用(GNU sed):
通过设置
-n
关闭隐式打印。匹配一行开头白色,后跟
match me
,然后获取下一行。如果提取的行与
"""
后面的空白匹配,则中断并不执行进一步处理。否则,打印当前行并获取下一行,并如上所述进行处理。
注意:n通常打印当前行并获取下一行。然而,当与
-n
选项一起使用时,打印被抑制。这里还解释了使用b
命令的控制流。