请教shell用命令行替换“文本”中的内容的问题。

发布于 2022-07-27 03:09:33 字数 564 浏览 39 评论 9

在linux下用shell命令行打开一个a.xml文件后,将其中一行替换掉。有什么方法吗。谢谢

a.xml的内容:
<project name="Uap_dist" default="copy" basedir="./Uap_dist">
    <target name="build">
        <cvs command="up -d" tag="bate01" cvsRoot=":pserver:ty@10.92.2.82:/cvsroot" />
    </target>
</project>

将tag="bate01"换成tag="bate02"写个shell自动完成

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

自由范儿 2022-07-27 22:17:14

find . -name "*.xml" | xargs sed -i.bak 's/tag="bate01"/tag="bate02"/'       一句话就执行完
没sed就perl
find . -name "*.xml" | xargs perl -i.bak -pe 's/tag="bate01"/tag="bate02"/'

世界等同你 2022-07-27 22:13:10

for f in `find -name "*.xml"`; do sed -e 's/tag="bate01"/tag="bate02"/g' $f >/tmp/$f.tmp;
mv -f /tmp/$f.tmp $f; done

试试看能否解决问题?

秋叶绚丽 2022-07-27 22:11:37

sed '/xxxx/xxx' -i *
这样可以么?不循环,直接*

無心 2022-07-27 22:11:37

原帖由 Yuri.G. 于 2006-10-13 13:26 发表
sed '/xxxx/xxx' -i *
这样可以么?不循环,直接*

不行

一个人练习一个人 2022-07-27 21:08:35

当前目录?那可能就要用一个for循环了

小兔几 2022-07-27 20:44:24

原帖由 littlecrazy 于 2006-10-13 10:39 发表
sed -e 's/tag="bate01"/tag="bate02"/g' a.xml >a.tmp.xml
mv -f a.tmp.xml a.xml
用全文替换,应该不用循环。

不好意思写错了,不是当前文件是当前目录,多谢帮忙。

荆棘i 2022-07-27 17:41:28

sed -e 's/tag="bate01"/tag="bate02"/g' a.xml >a.tmp.xml
mv -f a.tmp.xml a.xml
用全文替换,应该不用循环。

丑疤怪 2022-07-27 16:41:16

谢谢
如果要想把当前目录中的所有xml文件替换,将tag="bate01"换成tag="bate02"
循环一下怎么写。大家知道吗

照例子写了个,但总报错。shell的语法不熟
-------------------------------------------------------------------------------
# file convert.sh
#!/bin/sh

for filename in `find . -name "*.xml"`
  do
    echo Deal with $filename
    sed 's/tag="bate01"/tag="bate02"/' $filename > $filename'.tmp'
    rm -f $filename
    mv $filename'.tmp' $filename
    echo "                        [done!]"
  done
------------------------------------------------------------------------------------
'/cpplugin.sh: line 4: syntax error near unexpected token `do
'/cpplugin.sh: line 4: `  do

[ 本帖最后由 spouter 于 2006-10-13 10:51 编辑 ]

不美如何 2022-07-27 11:47:07

sed -i '/tag="bate01"/tag="bate02"/s' a.xml
应该是这样,我忘了"要补要用转义.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文