在 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 命令:
sed 's/[^@]*\(@[^ .]*\)/\n/g' file.txt
说明:我们调用sed
的替换命令。这具有以下结构:sed 's/regex/replace/options'
。我们将搜索正则表达式并使用 g
选项替换它。 g
确保每行匹配多次。
我们寻找一系列非 at 字符,后跟一个 @
和一些非空格 @[^ ]*
。我们将最后一部分放在一个组 \(\)
中,并在替换 </code>.</p> 期间将其子化
<p>请注意,我们在每个匹配项的末尾添加一个换行符,您也可以通过省略 <code>\n
.
来在单行上获得输出
我有一个包含很多文本的文件,但我只想打印开头包含“@”的单词。例如:
My name is @Laura and I live in @London. Name=@Laura. City=@London
如何打印所有以 @ 开头的单词?我按照以下方法进行了操作并且有效,但我想使用 sed 来完成。我尝试了几种模式,但我无法打印任何东西。
grep -o -E "@\w+" file.txt
谢谢
使用此 sed 命令:
sed 's/[^@]*\(@[^ .]*\)/\n/g' file.txt
说明:我们调用sed
的替换命令。这具有以下结构:sed 's/regex/replace/options'
。我们将搜索正则表达式并使用 g
选项替换它。 g
确保每行匹配多次。
我们寻找一系列非 at 字符,后跟一个 @
和一些非空格 @[^ ]*
。我们将最后一部分放在一个组 \(\)
中,并在替换 </code>.</p> 期间将其子化
<p>请注意,我们在每个匹配项的末尾添加一个换行符,您也可以通过省略 <code>\n
.