sed:在模式中提取一行中出现重复次数的文本

复仇者

我需要提取一部分可能在每行中出现1到n次的字符串。

例如,这将反映出我的需求:

This [dbo].[something] is a text containing [dbo].[something_else], then okay?
And then, [dbo].[something] may appear just once.
But why, nothing prevents [dbo].[something] from appearing twice as [dbo].[something] here.
And then can be three times, as [dbo].[something] is [dbo].[anything] but [dbo].[elsewhere] here.
[dbo].[otherthing] depicts another scenario with just one and pattern heading line
Or, also [dbo].[ultra] with an arbitrary amount of [dbo].[references] but ending with [dbo].[pattern]

您可能已经注意到,模式为\[dbo\]\.\[[^]]+\]例如,从上面的文本中,我希望得到以下结果:

something something_else
something
something something
something anything elsewhere
otherthing
ultra references pattern

然后,我可以将所有内容都内联(或追加到bash数组中)并过滤重复项,这不应该成为问题。我只是很难弄清楚如何在一次扫描中执行此过滤器。

我在这里所得到的结果只是提取了最后一个匹配项(很明显为什么您习惯使用sed的“贪婪”方法进行模式匹配):

cat dborefs.txt | sed -E "s/(.*\[dbo\]\.\[([^]]+)\].*)*/\2/g"
something_else
something
something
elsewhere
otherthing
pattern

我可以提取,然后替换模式,使其不再匹配,然后再次提取,直到不再匹配,但这听起来太麻烦了,考虑了所有bash开销;最好能够在一次调用中提取所有内容sed我认为这应该是可能的,只是无法轻易弄清楚如何做到。认为这对其他人可能有用,我觉得在这里分享此事可能会为社区带来丰硕的成果。

复仇者

就目前而言,我希望(希望)比反复调用sed好得多的是用占位符“链接”替换,希望这些占位符不会出现在文件中。

cat dborefs.txt | sed -E "
 s/\[dbo\]\.\[([^]]+)\]/_-\1-_/g;
 s/(^|-_)([^_]+|_[^-])*(\$|_-)/ /g;
 s/(^ +| +\$)//g"

换句话说:

  • 首先我得到全部[dbo].[<extract>]并替换为_-<extract>-_;
  • 然后将第一个_-之前-_之间以及_-最后-_一个之后的任何文本替换为单个空格字符;
  • 然后清除每行开头和结尾的空白字符。

这样可以达到预期的结果,我也许可以将其全部加入一个数组中,然后使用sort进行过滤以查找唯一的条目。但是我仍然认为,没有链式sed命令应该有更好的方法

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

计算一行中出现的次数

来自分类Dev

从模式中提取文件中每一行的文本

来自分类Dev

获取重复次数与出现次数的关系

来自分类Dev

按出现次数计算重复次数

来自分类Dev

sed,从文本中提取行

来自分类Dev

从单元格中提取文本的第一行

来自分类Dev

如何获得R中每一行中出现次数第二多的值(和出现次数最少的值)

来自分类Dev

计算值在 R 中出现的次数(并将其附加在每一行中)

来自分类Dev

计算每个标记在 DataFrame 的每一行中出现的次数

来自分类Dev

在一行文本中仅提取匹配的模式

来自分类Dev

在模式搜索的同一行上插入sed文本

来自分类Dev

获取重复行以及在MYSQL中出现的次数

来自分类Dev

如何使用sed在一行中有多次出现的两个模式之间搜索文本?

来自分类Dev

求一个矩阵的每一行在另一个矩阵中出现的次数

来自分类Dev

如何计算唯一行数,重复行数和在文本文件中出现三遍的行数

来自分类Dev

重复次数累计

来自分类Dev

重复次数

来自分类Dev

使用awk提取在一列中出现的具有多种模式的行

来自分类Dev

使用sed从文件中提取一行的一部分

来自分类Dev

从矩阵中提取一行

来自分类Dev

如何使用grep或sed在同一行中提取多个匹配项

来自分类Dev

正则表达式模式 - 如何从一行中提取 N 个元素?

来自分类Dev

如何从一行文本中提取一个int?

来自分类Dev

使用sed重复每一行

来自分类Dev

如何从文件中提取所有文本并将其插入到一行的列中?

来自分类Dev

从文本文件中提取一行中的第二个单词

来自分类Dev

我该如何从div标签中提取文本并一行打印

来自分类Dev

从每一行的文本文件中提取子字符串?

来自分类Dev

使用正则表达式从C ++中的一行文本中提取数据

Related 相关文章

  1. 1

    计算一行中出现的次数

  2. 2

    从模式中提取文件中每一行的文本

  3. 3

    获取重复次数与出现次数的关系

  4. 4

    按出现次数计算重复次数

  5. 5

    sed,从文本中提取行

  6. 6

    从单元格中提取文本的第一行

  7. 7

    如何获得R中每一行中出现次数第二多的值(和出现次数最少的值)

  8. 8

    计算值在 R 中出现的次数(并将其附加在每一行中)

  9. 9

    计算每个标记在 DataFrame 的每一行中出现的次数

  10. 10

    在一行文本中仅提取匹配的模式

  11. 11

    在模式搜索的同一行上插入sed文本

  12. 12

    获取重复行以及在MYSQL中出现的次数

  13. 13

    如何使用sed在一行中有多次出现的两个模式之间搜索文本?

  14. 14

    求一个矩阵的每一行在另一个矩阵中出现的次数

  15. 15

    如何计算唯一行数,重复行数和在文本文件中出现三遍的行数

  16. 16

    重复次数累计

  17. 17

    重复次数

  18. 18

    使用awk提取在一列中出现的具有多种模式的行

  19. 19

    使用sed从文件中提取一行的一部分

  20. 20

    从矩阵中提取一行

  21. 21

    如何使用grep或sed在同一行中提取多个匹配项

  22. 22

    正则表达式模式 - 如何从一行中提取 N 个元素?

  23. 23

    如何从一行文本中提取一个int?

  24. 24

    使用sed重复每一行

  25. 25

    如何从文件中提取所有文本并将其插入到一行的列中?

  26. 26

    从文本文件中提取一行中的第二个单词

  27. 27

    我该如何从div标签中提取文本并一行打印

  28. 28

    从每一行的文本文件中提取子字符串?

  29. 29

    使用正则表达式从C ++中的一行文本中提取数据

热门标签

归档