[英]how to print Lines Between Two Patterns in file using SED or AWK?
我在使用精确的字符串(即“ ###”而不是“ ####”)在两行之间打印文件选择时遇到问题
我尝试选择文件中文本的一部分,但无法获得所需的选择
通过运行命令:
sed -ne“ / MULTIPLE-RESOURCES /,/ ### / p” kubernetes_commands.md
### MULTIPLE-RESOURCES
#### Viewing Resource Information
> kubectl get svc, po
> kubectl get deploy, no
> kubectl get all
> kubectl get all --all-namespaces
## KUBECTL
###
> kubectl run -i --tty busybox --image=busybox --restart=Never -- sh
从这篇文章中,我希望有:
### MULTIPLE-RESOURCES
#### Viewing Resource Information
> kubectl get svc, po
> kubectl get deploy, no
> kubectl get all
> kubectl get all --all-namespaces
## KUBECTL
但实际结果是:
### MULTIPLE-RESOURCES
#### Viewing Resource Information
您可以使用此sed
:
sed -n '/MULTIPLE-RESOURCES/,/^###$/ { /###$/!p; }' file
### MULTIPLE-RESOURCES
#### Viewing Resource Information
> kubectl get svc, po
> kubectl get deploy, no
> kubectl get all
> kubectl get all --all-namespaces
## KUBECTL
这是一个使用perl的简单解决方案:
perl -ne 'print if /MULTIPLE-RESOURCES/ .. s/^###\n//'
要点是将###
模式锚定到行的开头( ^
)和结尾( \\n
)。 不进行任何替换也可以确保最后的###
行本身不会被打印。
您可以尝试的是:
sed -n '/MULTI/,/^## KUBE/p' file
您可以尝试以下吗?
awk '/^### |^###$/{if(++count==1){found=1} else {found=""}} found' Input_file
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.