This question already has answers here:
How do you delete all lines that begin with “string” in unix sh?

(4个答案)


5年前关闭。




我正在使用小型bash脚本。我需要删除仅与该行的第一个单词中的确切单词匹配的整行。

这就是文本文件的外观:
John is a dumb
Maria is awesome
Toni and Maria are funny

我想删除第二行。

现在,我可以匹配确切的单词“maria”,但它也删除了第三行:
sed -i "/\b\(maria\)\b/d" file.txt

如何只指定第一个单词?

谢谢!

最佳答案

当前,您正在查找由单词边界(由\b表示)包围的“玛丽亚”。而是在行首(由^表示)之前查找“maria”。注意,我还删除了不必要的括号并添加了/I标志,这会使搜索不区分大小写。您的原件将不匹配“Maria”。

sed -i "/^maria\b/Id" file.txt

编辑:将不区分大小写的标志固定为I而不是I!

09-30 20:32