www.rtmj.net > shEll脚本中文件替换

shEll脚本中文件替换

1、启动Linux系统,用ssh工具连上Linux系统.2、bash自带了一些调试选项.3、在脚本启动时添加调试选项.来调试debug.sh.4、在脚本内添加调试选项,使用set 命令.5、现在要看debug.sh脚本执行的调试信息,就不需要使用bash -x ./debug.sh执行了.6、在脚本开头添加-xv选项.7、同样现在执行./debug.sh,也可打印出调试信息.注意事项:shell脚本在计算机科学中,是指“为使用者提供操作界面”的软件(命令解析器).类似于DOS下的command.com和后来的cmd.exe.它接收用户命令,然后调用相应的应用程序.

使用sed、awk都可以实现替换功能.

sed -i '/aaa/{:a;n;s/123/xyz/g;/eee/!ba}' yourfile先匹配aaa,匹配到后执行大括号里的语句.n 读取下一行 s/123/xyz/g 将123替换为xyz,全局替换,同一行中出现几次替换几次:a 设定跳转标签a/eee/!ba 若当前行匹配不上eee,则跳转到标签a处继续执行,构成一个循环.若匹配到eee,则退出循环,sed重新对读入的每行匹配aaa.由于sed没有加-n静默选项,所以默认对每行数据处理后都打印.

先读取A文件中那行内容,然后通过awk获取B文件中的第五行内容,替换后重新覆盖写入A文件.代码如下:#!/bin/sh A=/usr/123.txt B=/tem/456.conf read line <$A awk -v a=$line 'NR==5{print $1"\t"a}' $B >$A

用crontab 循环执行任务 #crontab -e (编辑执行内容) 15 * * * * /path/a.sh 上面的星星分别代表的是 * * * * * 分 时 日 月 周

好方法.另外,管道符不是必要的,可以通过-e选项,在一个sed命令中同时使用两个表达式.sed -i -e '/^start/,/^end/{//!d}' -e '/^start/r b.txt' a.txt 或者直接两个语句分号分隔:sed -i '/^start/,/^end/{//!d};/^start/r b.txt' a.txt

cat A|grep "abcdef" >>Bsed -i 's/^.*abcdef/#&/g' A测试了下,可以

1、按=分割取第二列 cat $file1|grep mqserver|awk -F= '{print $2}'`2、直接替换文件内容 sed -i "s/127.0.0.1/192.168.1.1/" file13、实例:#!/bin/sh file1=ip1.txt file2=ip2.txt IP1=`cat $file1|grep mqserver|awk -F= '{print $2}'` IP2=`cat $file2|grep ip|awk -F= '{print $2}'` echo change $IP1 to $IP2.sed -i "s/$IP1/$IP2/" $file1 more $file1

我也给个思路吧 用sed根据地址范围截取文件内容,用here documents方法添加新的多行内容,然后重组文件.具体步骤如下:1)截取test.xml文件起始行到行,保存到tmp文件;2)将要添加的内容根据变量值展开,附加写入tmp文件;3

#使用下面就可以啊,你看我替换的结果.sed -i 's/\:/\$/g' passwd[root@localhost shell]# more passwd root$x$0$0$root$/root$/bin/bashbin$x$1$1$bin$/bin$/sbin/nologindaemon$x$2$2$daemon$/sbin$/sbin/nologinadm$x$3$4$adm$/var/adm$/sbin/nologin你执行报错可能有2种:1.passwd文件,要不你把你的文件发我.2.shell问题,你用的什么shell?

网站地图

All rights reserved Powered by www.rtmj.net

copyright ©right 2010-2021。
www.rtmj.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com