我有一个包含大量文字的文件,但我想在开头只打印包含“@”的单词。例如:
My name is @Laura and I live in @London. Name=@Laura. City=@London
如何打印以@?开头的所有单词。我这样做了以下并且它有效,但我想用sed来做。我尝试了几个图案,但我不能打印任何东西。
grep -o -E "@\w+" file.txt
由于
答案 0 :(得分:2)
使用此sed命令:
sed 's/[^@]*\(@[^ .]*\)/\1\n/g' file.txt
说明:我们调用sed
的替换命令。这具有以下结构:sed 's/regex/replace/options'
。我们将搜索正则表达式并使用g
选项替换它。 g
确保每行匹配多次。
我们会查找一系列非字符,后跟一个@
和一些非空格@[^ ]*
。我们将此最后一部分放在一个组\(\)
中,并在替换\1
期间将其归档。
请注意,我们会在每次匹配结束时添加换行符,您也可以通过省略\n
来获取单行上的输出。