我有一个像这样的电子邮件列表:
aaa@you1.com
abc@you3.com
def@you4.com
我需要删除@符号前面的所有字符。有没有一种方法用Sed做这个?
答案 0 :(得分:5)
sed 's/^.*@/@/' infile > outfile
答案 1 :(得分:5)
你可以使用grep,
$ grep -oE '@.*' file
@you1.com
@you3.com
@you4.com
答案 2 :(得分:4)
像这样:
$ sed 's/[^@]*//' file
@you1.com
@you3.com
@you4.com
基本的sed语法是sed 's/search/replace/' file
。这会在search
中查找file
,并将其替换为replace
文本。如果您想在该行的所有匹配项中执行此替换,则可以使用sed 's/search/replace/g' file
。
在这种情况下,我们正在寻找模式[^@]*
,这意味着:所有字符都不是@
。这将匹配行的开头,直到(排除)找到@
。替换为//
意味着此字符串将被替换为任何内容 - >除去。
要进行就地编辑,只需添加-i.bak
即可。这样,您的原始文件将被替换,但也会创建备份file.bak
:
sed -i.bak 's/[^@]*//' file