如何使用 linux 命令单独在子标题下显示行而忽略文件中的其他行



我有一个包含以下内容的文件。我想在其中仅显示特定子标题下的行。我尝试使用一些 sed 和 awk 命令,但我无法理解。任何人都可以通过一些 linux 命令帮助破解这个问题吗?

[first attempt]
a=10
b=20
[second attempt]
a=20
b=20
[third attempt ] 
a=30
b=50

是否可以通过使用awk或sed或cut命令指定侧标题,仅在"[第二次尝试]"侧标题下显示内容,或者在任何其他侧标题下单独显示内容。输出应如下所示。提前谢谢。

[second attempt]
a=20
b=20

在段落模式下使用 awk(记录用空行分隔(:

$ awk -v RS= '/second attempt/' file
[second attempt]
a=20
b=20
awk -vRS='[' '/first attempt/{printf RT $0}' b

awk

awk '/[first attempt]/{p=1} !NF{p=0}p' file

测试:

$ awk '/[second attempt]/{p=1} !NF{p=0}p' file
[second attempt]
a=20
b=20

也试试这个sed命令

sed -n  '/[second attempt]/{:loop ; N ; /n$/p ; b loop }'  FileName

输出:

[second attempt]
a=20
b=20

忽略[第二次尝试]下的内容:

sed   '/[second attempt]/{:a ; N ;s/.*n$//;   b a }'

输出:

[first attempt]
a=10
b=20

[third attempt ] 
a=30
b=50

这可能对你有用(GNU sed(:

sed '/^[second attempt]/{:a;n;/./ba};d' file

匹配字符串[second attempt]并继续打印,直到文件末尾或空行。删除所有其他行。

sed '/[second attempt]/,/^[[:blank:]]*$/ !{d;}' YourFile

仅打印您的分区

相关内容

最新更新