用于删除包含范围内的字符的 Sed 命令

用于删除包含范围内的字符的 Sed 命令

我正在使用一个看起来有点像这样的 xml 文件

<w:ins w:id="0" w:author="Nick" w:date="2016-11-23T00:16:00Z"><w:r w:rsidR="009C39E2"><w:rPr><w:ins w:id="1" w:author="Nick" w:date="2016-11-23T00:16:00Z">

我正在尝试删除涉及 w:date 的所有内容,以便产品看起来像。

<w:ins w:id="0" w:author="Nick"><w:r w:rsidR="009C39E2"><w:rPr><w:ins w:id="1" w:author="Nick">

目前,我正在尝试这个错误的 sed 命令。sed 's/w:date=".*"//g'我知道这是错误的,但我不确定如何解决这个问题。

编辑:

cat testing.txt  
<w:ins w:id="0" w:author="Nick" w:date="2016-11-23T00:16:00Z"><w:r w:rsidR="009C39E2"><w:rPr><w:ins w:id="1" w:author="Nick" w:date="2016-11-23T00:16:00Z">

sed 's/ w:date="[^\]*"//g' testing.txt
<w:ins w:id="0" w:author="Nick">

答案1

你的表情太贪婪了。你想要匹配属性,引号,一些非引号字符然后是结尾引用:

sed 's/ w:date="[^"]*"//g' file
# ..............^^^^
<w:ins w:id="0" w:author="Nick"><w:r w:rsidR="009C39E2"><w:rPr><w:ins w:id="1" w:author="Nick">

相关内容