sed命令用第3行替换任何内容后用字符串替换

时间:2014-05-08 14:23:49

标签: sed substitution

我想替换这一行

<data_item name="any_text">

位于第3行

<data_item name="my_text">

所以我试过像sed '3s/=*/=my_text/' input_file > output_file

这样的东西

但这是在行的开头打印我的文本。围绕(=*)(=my_text)进行了检查,但这并没有做任何事情。

3 个答案:

答案 0 :(得分:0)

试试这个

sed '3s/any_text/my_text/' file

示例:

$ echo '<data_item name="any_text">' | sed '1s/any_text/my_text/'
<data_item name="my_text">

您的代码:

sed '3s/=*/=my_text/'

您的代码将使用=my_text替换第三行中的0或更多等号。

答案 1 :(得分:0)

sed '3s/=".*"/="mytext"/'

应该有效。您需要.,因为它匹配任何字符,而*表示您想要前面的符号.中的0个或更多。在正则表达式中,*并不意味着匹配任何东西。它是一个量词,表示它指定和数量,通常用于指定您想要匹配的前面术语的数量。

答案 2 :(得分:0)

sed '3 c\
<data_item name="my_text">' YourFile

假设my_text的内容不包含unescape \ &'

避免在samle指令中的同一文件上<>,可能会产生意外结果。在GNU sed上使用-i上的临时文件