如何使用 sed 删除特定符号之前的所有字符?

use*_*416 2 regex sed

我有一个文本文件,我需要删除每一行中等号之前的所有字符,例如:

线路:

File 1515 = foo.txt
Run Code Online (Sandbox Code Playgroud)

需要看起来像这样:

=foo.txt
Run Code Online (Sandbox Code Playgroud)

我试过这个sed命令:

sed s/=[^=]*^// everyone.pls
Run Code Online (Sandbox Code Playgroud)

但它会删除等号后面的所有字符。

如何删除之前的字符=

Joh*_*024 5

删除第一个等号之前的所有内容:

sed 's/^[^=]*=/=/' everyone.pls
Run Code Online (Sandbox Code Playgroud)

如果文件everyone.pls看起来像:

$ cat everyone.pls
File 1515 = foo.txt
File 1516 = foo=.xls
Run Code Online (Sandbox Code Playgroud)

上面的命令产生:

$ sed 's/^[^=]*=/=/' everyone.pls
= foo.txt
= foo=.xls
Run Code Online (Sandbox Code Playgroud)

在 regex 中^[^=]*=/,前导插入符意味着 regex 必须从行首开始匹配。该表达式[^=]*=匹配直到并包括第一个等号的每个字符。因为我们想要输出中的等号,所以我们需要用等号代替所有这些。