我在一个文件夹中有大约300个文件。 我需要在文件中搜索此标签
<b>This string must stay</b><br />
并用
替换它们<CustomerInfo>This string must stay</CustomerInfo>
不得更改内部字符串。
答案 0 :(得分:0)
试试这个:
sed 's@<b>.*</b><br />@<CustomerInfo>This string must stay</CustomerInfo>@g' file.txt
答案 1 :(得分:0)
这将替换当前目录和子目录中每个文件中的字符串(它不会忽略二进制文件,所以要小心你想要的)
这适用于find in command dependencies(unix有)
首先要确保这不会破坏任何尝试(它只会显示它的作用的预览):
find . -type f -exec sed -e 's@<b>\(.*\)</b><br />@<CustomerInfo>\1</CustomerInfo>@g' {} \;
如果它按预期工作,那么这里是龙:
find . -type f -exec sed -i 's@<b>\(.*\)</b><br />@<CustomerInfo>\1</CustomerInfo>@g' {} \;
答案 2 :(得分:0)
您可以使用以下内容:
sed -r 's#<b>([^<]*)</b><br />#<CustomerInfo>\1</CustomerInfo>#g' file
一旦确定无效,请替换-r
-ir
进行现场编辑。
如果您想通过文件运行它,当您在某处发表评论时,请执行以下操作:
find $1 -type f -iname '*.html' -exec \
sed -r 's#<b>([^<]*)</b><br />#<CustomerInfo>\1</CustomerInfo>#g' {} \;
<b>([^<]*)</b><br />
寻找具有<b>....</b><br />
的内容并在其间捕捉文字。<CustomerInfo>\1</CustomerInfo>
将其替换为<CustomerPage>
+给定文字+ </CustomerPage>
。给出一个示例文件:
$ cat a
hello
bye
aaa <b>hello</b><br /> beee
<b>hello</b><br />
<b>hello</b>blabla
让我们试一试:
$ sed -r 's#<b>([^<]*)</b><br />#<CustomerInfo>\1</CustomerInfo>#g' a hello
bye
aaa <CustomerInfo>hello</CustomerInfo> beee
<CustomerInfo>hello</CustomerInfo>
<b>hello</b>blabla