Regex &引用;sed";命令删除与第一个单词上的字符串完全匹配的行

Regex &引用;sed";命令删除与第一个单词上的字符串完全匹配的行,regex,linux,bash,sed,Regex,Linux,Bash,Sed,我正在使用一个小bash脚本。我需要删除一整行,只匹配行中第一个单词中的确切单词 这就是文本文件的外观: John is a dumb Maria is awesome Toni and Maria are funny 我只想删除第二行 现在,我可以精确匹配“maria”一词,但它也删除了第三行: sed -i "/\b\(maria\)\b/d" file.txt 如何只指定第一个单词 谢谢 目前,您正在查找由单词边界(由\b表示)包围的“maria”,而不是在“maria”之前查找行首(

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

这就是文本文件的外观:

John is a dumb
Maria is awesome
Toni and Maria are funny
我只想删除第二行

现在,我可以精确匹配“maria”一词,但它也删除了第三行:

sed -i "/\b\(maria\)\b/d" file.txt
如何只指定第一个单词


谢谢

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


编辑:修复了不区分大小写的标志为I而不是I

使用
^
将图案锚定到行首。您可以尝试
sed-i/^maria\b/id”file.txt
^
是起始行,
I
不区分大小写为什么这个问题被否决?它有一个目标的精确描述,一个样本数据集,以及一个自己实现目标的方法。@RamboRamon非常感谢,我真的为此感到不安!它在ksh不起作用?如果文本的行为“maria-d”,那么?不起作用。它是一个外壳。sed是一个程序。他们并没有真正的联系。我在问题中提到了示例数据,但我确信在大多数语言中,单词边界断言都与连字符匹配。
sed -i "/^maria\b/Id" file.txt