gpt4 book ai didi

sed - 打印特定字符出现两次或多次的特定行

转载 作者:行者123 更新时间:2023-12-04 14:06:46 25 4
gpt4 key购买 nike

我有一些文本行的文件。如果它有两个“b”,我需要打印第 3-7 行和第 11 行。我做了

sed -n '/b\{2,\}/p' file 但是它打印了连续两次出现“b”的行

最佳答案

你可以使用

sed -n '3,7{/b[^b]*b/p};11{/b[^b]*b/p}' file
## that is equal to
sed -n '3,7{/b[^b]*b/p};11{//p}' file

请注意 b[^b]*b 匹配 b,然后是 b 以外的任何零个或多个字符,然后是 b。第二部分中的 //p 匹配最新的模式,即匹配相同的 b[^b]*b 正则表达式。

请注意,如果您愿意,您也可以使用 b.*b 正则表达式,但括号表达式往往会更快。

查看 online demo ,使用 sed (GNU sed) 4.7 测试:

s='11bb1
b222b
b n b
ww
ee
bb
rrr
fff
999
10
11 b nnnn bb
www12'
sed -ne '3,7{/b[^b]*b/p};11{/b[^b]*b/p}' <<< "$s"

输出:

b  n    b
bb
11 b nnnn bb

只返回第 3、6 和 11 行。

关于sed - 打印特定字符出现两次或多次的特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67952406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com