我有一个包含以下内容的文件。我想在其中仅显示特定子标题下的行。我尝试使用一些 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
仅打印您的分区