我有这个文件:
sometext1{
string1
}
sometext2{
string2
string3
}
sometext3{
string4
string5
string6
}
我想在该文件中搜索特定的字符串,并在此字符串之前将所有内容打印到开头,{
并在此字符串之后将所有内容打印到结尾}
。我尝试使用sed实现此目的,但是如果尝试打印/{/,/string2/
sed 范围内的所有内容,例如sed会打印以下内容:
sometext1{
string1
}
sometext2{
string2
sometext3{
string4
string5
string6
}
如果我搜索字符串“ string2”,则需要输出为:
sometext2{
string2
string3
}
谢谢。
grep -n '' <infile | sed ...
。这些sed
命令将需要修改;特别是寻找行顶锚的/
地址/
位^
。因此,如果您使用我的答案,则可以执行:grep -n '' | sed 'H;/{$/h;/^[^:]*:}/x;/{\n.*PATTERN/!d'
。所有输出行都将以原始文件的行号作为前缀,后跟冒号等1:sometext1{\n2:string1
。sed
将仅过滤之前过滤的内容,不同之处在于每条输出行均以数字开头。