我想替换这一行
<data_item name="any_text">
位于第3行
<data_item name="my_text">
所以我试过像sed '3s/=*/=my_text/' input_file > output_file
但这是在行的开头打印我的文本。围绕(=*)
和(=my_text)
进行了检查,但这并没有做任何事情。
答案 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
上的临时文件