在一行中复制多个匹配

时间:2017-04-06 11:53:01

标签: sed grep

我有一个像这样的单行文件:class =“Foo”无关的东西(+ string)无关的东西 class =“Foo”无关紧要东西(+ string)无关的东西 ...
我需要收集里面的每个字符串(),行中最多有200个字符串。

我只能考虑在每个课程和正在运行的egrep之后添加一个新行。

我使用sed's / class =“Foo”/ \ n / g'在每个类之后创建新行。然后我使用egrep'(+。*)'过滤掉我需要的所有字符串然后再次sed以杀死()和+。

1 个答案:

答案 0 :(得分:0)

然后这是我的第二次拍摄: 我是一个文件,我只包含一行,但是很长。该行内有多个类

class="Foo"

每个班级之后都有这样的地方

(+Bar)

这些图案之间是随机数字字母和符号,最多可重复200次。 (+。*)的内部对于每次重复都是不同的。

我需要消除文件中的所有内容,但包含在(+)中的字符串,并在每个字符串后创建一个换行符。

所以我得到这样的输出

bar1
bar2
...
barn 

现在我这样做:

sed 's/class="Foo"/\n/g'

所以每个班级都有一行。

egrep '\(+.*\)' -o

要找到里面的字符串(+),之后2次sed要杀死(和)。

它完全符合我的要求,但我想知道是否有更好的方法。