繁体   English   中英

如何使用SED或AWK在文件中打印两个图案之间的线?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM