TL;dr:我如何用pcregrep来拆分每一个多行匹配?
长版本:我有一些文件,有些行以(小写)字符开头,有些以数字或特殊字符开头。如果我至少有两行彼此相邻,以小写字母开头,我希望在我的输出中这样做。但是,我希望每个发现都被分隔/拆分,而不是相互附加。这是正则表达式:
pcregrep -M "([a-z][^\n]*\n){2,}"
所以,如果我提供这样的文件:
-- Header --
info1
info2
something
< not interesting >
dont need this
+ new section
additional 1
additional 2
给出的结果是
info1
info2
something
additional 1
additional 2
然而,我想要的是这个:
info1
info2
something
additional 1
additional 2
这可能吗和/或我必须开始使用Python(或类似)?即使建议从现在开始使用其他东西,首先知道它是否可能仍然很好。
谢谢
下面的se
似乎可以做到这一点:
sed -n '/^[a-z]/N;/^[a-z].*\n[a-z]/{p;:l n;/^[a-z]/{p;bl};a\
}'
说明:
/^[a-z]/{ # if a line starts with a LC letter
N; # consume the next line while conserving the previous one
/^[a-z].*\n[a-z]/{ # test whether the second line also starts with a LC letter
p; # print the two lines of the buffer
l: n; # define a label "l", and reads a new line
/^[a-z]/{ # if the new line still starts with a LC letter
p; # print it
bl # jump back to label "l"
}
a\
# append a new line after every group of success
}
}
样品运行:
$ echo '-- Header --
> info1
> info2
> something
> < not interesting >
> dont need this
> + new section
> additional 1
> additional 2 ' | sed -n '/^[a-z]/N;/^[a-z].*\n[a-z]/{p;:l n;/^[a-z]/{p;bl};a\
>
> }'
info1
info2
something
additional 1
additional 2
我有一个文本文件,其中包含2行样本DNA序列,使用,我想找到与“CCC”匹配的模式,特别是跨越多行的模式(见下面test.txt中第1行末尾到第2行开头)。 测试.txt: 使用命令: 返回: 它似乎正确地突出了第1行中的2个C,然而,它突出了第2行中的第一个C,然后继续完全打印出第二行;给我一个C的复制品。 我在这里做错了什么,我怎样才能避免第二行中重复的C?
问题内容: 我有一个具有这种结构的表。 我无法弄清楚我将使用哪种SQL查询来获得这样的结果集: 我正在尝试将三列分为三个单独的行。这可能吗? 问题答案: SELECT Y.UserID, Y.UserName, QuestionName = ‘AnswerToQuestion’ + X.Which, Response = CASE X.Which WHEN ‘1’ THEN AnswerToQue
问题内容: 我有桌子: 我想要这样的输出: 问题答案: 如果可以创建一个数字表,其中包含从1到要拆分的最大字段的数字,则可以使用以下解决方案: 请看这里的小提琴。 如果无法创建表,则解决方案可以是: 这里有个小提琴例子。
我有表: 我想要这样的输出:
问题内容: 我已使用从IMDB收集信息并将其传输到MYSQL数据库的应用程序导入了一些数据。 似乎这些字段尚未标准化,并且在1个字段中包含许多值 例如: 有没有办法将这些值分开,然后将它们插入到另一个表中,而不重复呢? 我进行了一些谷歌搜索,发现我应该使用PHP处理此数据。但是我一点都不了解PHP。 无论如何,仅使用MYSQL即可转换此数据? 问题答案: 您可以使用存储过程,该过程使用游标来解
问题内容: 我的问题是我有一个这样的表: c1 | c2 | c3 | c4是一个由|分隔的值。 我的最终结果应如下所示: 我该怎么做呢? 谢谢 问题答案: 这就是您可以执行的操作,使用管道将字符串拆分并使用spark函数爆炸数据 输出: 希望这可以帮助!