我有一个像这样的电子邮件列表:

aaa@you1.com
abc@you3.com
def@you4.com


我需要删除@符号前面的所有字符。有使用Sed执行此操作的方法吗?

最佳答案

像这样:

$ 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

关于linux - 删除一行的第一部分,直到找到字符@,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25788987/

10-13 08:05
查看更多