在 BASH 中使用 sed 打印所有以“@”开头的单词

Printing all words that start with "@" using sed in BASH

我有一个包含很多文本的文件,但我只想打印开头包含“@”的单词。例如:

My name is @Laura and I live in @London. Name=@Laura. City=@London

如何打印所有以 @ 开头的单词?我按照以下方法进行了操作并且有效,但我想使用 sed 来完成。我尝试了几种模式,但我无法打印任何东西。

grep -o -E "@\w+" file.txt

谢谢

使用此 命令:

sed 's/[^@]*\(@[^ .]*\)/\n/g' file.txt

说明:我们调用sed的替换命令。这具有以下结构:sed 's/regex/replace/options'。我们将搜索正则表达式并使用 g 选项替换它。 g 确保每行匹配多次。

我们寻找一系列非 at 字符,后跟一个 @ 和一些非空格 @[^ ]*。我们将最后一部分放在一个组 \(\) 中,并在替换 </code>.</p> 期间将其子化 <p>请注意,我们在每个匹配项的末尾添加一个换行符,您也可以通过省略 <code>\n.

来在单行上获得输出