0

我有一个需要定制的文件;它包含由@variable.name@ 表示的“变量”;一行中可能有多个这样的变量;我想找到所有这些。

我的想法是这应该可以使用 sed 正则表达式来实现,但是大多数 linux 命令都可以使用...

我想到的正则表达式是这个: s#(.*)(@.*@)(.*)#\2#

然而,这并没有抓住所有...

让我们假设这个文件:

Dear @sirmadam@,

Today is @day@-@month@-@year@, a nice @weekday@day.
It is my @pleasureornot@ to tell you youre @hiredorsacked@.

Sincerely,
@nameoftheboss@

输出应该是:

@sirmadam@
@day@
@month@
@year@
@weekday@
@pleasureornot@
@hiredorsacked@
@nameoftheboss@

我认为我的主要问题是每个变量的开始和结束都使用相同的符号,但我对此无能为力......我的正则表达式-fu 缺乏......我无法理解这怎么可能解决了,这对我来说有点困惑。

4

1 回答 1

2

grep作品:

grep -o '@[^@]*@' foo.txt

相比之下,sed基本上以基于行的方式工作,打破这种范式虽然偶尔可能,但很难,通常表明另一种工具更适合。

于 2020-09-28T10:19:13.067 回答