在行中搜索 unix 单词,如果存在则从该单词到行尾删除

在行中搜索 unix 单词,如果存在则从该单词到行尾删除

我的文件包含以下几行

文件.txt

Unix is good
Linux and unix is different? 
Linux is also good,  then what about unix? 

在这里我想要输出

(1st line blank) 
Linix and
Linux is also good,  then what about

此处 vi 命令或任何其他命令是否会给出此输出?搜索特定单词(如果该单词在行中),然后删除该单词并删除该行中的所有单词。

答案1

要删除该单词unix以及该单词后面的所有单词:

$ sed 's/[uU]nix.*//' File.txt

Linux and 
Linux is also good,  then what about 

s表示代替命令。在此命令中,sed 匹配正则表达式[uU]nix.*并将其替换为空字符串。[uU]nix匹配Unixunix.*匹配后面的所有内容。

变化

下面的操作也将删除 前面的所有空格unix

sed 's/ *[uU]nix.*//' File.txt

下面的操作不仅会删除前面的空格unix,还会删除前面的制表符或任何其他空格unix

sed 's/[[:space:]]*[uU]nix.*//' File.txt

[:space:]匹配任何空格并且是unicode安全的。

下面的代码会删除前面的空格,但也会匹配任何大写的 ,unix例如UnixuNixuNIX等等:

sed 's/[[:space:]]*unix.*//I' File.txt

I告诉 sed 以不区分大小写的方式进行匹配。由于这是 GNU 扩展,因此此版本的命令无法移植到 MacOS 或 BSD。

相关内容