我的文件包含以下几行
文件.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
匹配Unix
或unix
。 .*
匹配后面的所有内容。
变化
下面的操作也将删除 前面的所有空格unix
:
sed 's/ *[uU]nix.*//' File.txt
下面的操作不仅会删除前面的空格unix
,还会删除前面的制表符或任何其他空格unix
:
sed 's/[[:space:]]*[uU]nix.*//' File.txt
[:space:]
匹配任何空格并且是unicode安全的。
下面的代码会删除前面的空格,但也会匹配任何大写的 ,unix
例如Unix
,uNix
,uNIX
等等:
sed 's/[[:space:]]*unix.*//I' File.txt
I
告诉 sed 以不区分大小写的方式进行匹配。由于这是 GNU 扩展,因此此版本的命令无法移植到 MacOS 或 BSD。