linux shell 脚本获取和替换文件中特定内容

1.从一串字符串中获取特定的信息

要求1:获取本机IP:menu.lst为系统镜象的IP配置文件,需要从中获取到本机IP信息(从文件获取信息)

1 timeout 1
2 default 0
3
4 title live
5 find --set-root /casper/vmlinuz
6 kernel /casper/vmlinuz boot=casper ignore_uuid showmounts ip=eth0,10.0.66.66,255.255.240.0,10.0.64.3
7 initrd /casper/initrd.lz

menu.lst

要求2:修改(替换)原文件中特定内容:CenterServer.conf为SCC可执行程序的配置文件,需要将配置文件中的domain值改为本机IP。

 1 #CenterServer config file
2
3 # Logging Type: syslog|cerr|cout|file
4 LoggingType = cout
5
6 # Logging level: NONE|CRIT|ERR|WARNING|INFO|DEBUG|STACK
7 LogLevel = DEBUG
8 #LogLevel = INFO
9
10 #sip listen port
11 UDPPort = 5060
12 #SCC domain ip
13 Domain = 10.0.73.14
14 CallTimeout = 60
15
16 #RDS client working thread num (1--8)
17 RDSClientThreadNum = 2
18 #RDS Client Log on|off
19 RDSClientLog = off
20
21 #Daemon process yes|no, default=yes
22 IsDaemon = no
23
24 #Web server addr
25 WebServerUrl = http://localhost:9000
26
27 #SCC state Database
28 DataBase = scc
29 MySqlUserName = root
30 MySqlUserPasswd [email protected]666
31
32 MsIp = 127.0.0.1
33 MsPort = 9999

CenterServer.conf

实现脚本:

 1 #!/bin/sh
2 MENULST="/JONET_boot/menu.lst"
3 SCC_PATH="/JONET/bin/SCC/CenterServer.config"
4 LOCALIP="`awk -F ‘,‘ ‘{print $2}‘ $MENULST |grep .`";
5 echo $LOCALIP
6
7 modify_scc()
8 {
9 DOMAIN="`cat $SCC_PATH|grep Domain`"
10 echo $DOMAIN
11 echo $LOCALIP
12 #sed -e ‘s/Domain = 10.0.66.66/Domain = 10.0.73.15/g‘ $SCC_PATH
13 sed -i ‘s/‘"${DOMAIN}"‘/Domain = ‘"${LOCALIP}"‘/g‘ $SCC_PATH
14 }
15
16
17 modify_conf()
18 {
19 modify_scc
20 }
21
22 modify_conf
23
24 exit 0

conf.sh

说明:sed -i ‘s/‘"${DOMAIN}"‘/Domain = ‘"${LOCALIP}"‘/g‘
$SCC_PATH

  由于宏定义DOMAIN和LOCALIP在命令中使用$DOMAIN和$LOCALIP无法使用,需要使用‘"${DOMAIN}"‘和‘"${LOCALIP}"‘,使执行脚本时能够替换

 1 #!/bin/sh
2 MENULST="/JONET_boot/menu.lst"
3 SCC_PATH="/JONET/bin/SCC/CenterServer.config"
4 LOCALIP="`awk -F ‘,‘ ‘{print $2}‘ $MENULST |grep .`";
5 echo $LOCALIP
6
7 modify_scc()
8 {
9 DOMAIN="`cat $SCC_PATH|grep Domain`"
10 echo $DOMAIN
11 echo $LOCALIP
12 sed -i ‘s/‘"${DOMAIN}"‘/Domain = ‘"${LOCALIP}"‘/g‘ $SCC_PATH
13 }
14
15 modify_conf()
16 {
17 modify_scc
18 }
19
20 modify_conf
21
22 exit 0

conf.sh

linux shell 脚本获取和替换文件中特定内容,布布扣,bubuko.com

时间: 2024-10-08 10:29:07

linux shell 脚本获取和替换文件中特定内容的相关文章

[linux] shell脚本编程-统计日志文件中的设备号发通知邮件

1.日志文件列表 比如:/data1/logs/2019/08/15/ 10.1.1.1.log.gz 10.1.1.2.log.gz 2.统计日志中的某关键字shell脚本 zcat *.gz|grep 关键字 |grep -oP "deviceid=[^=]+"|uniq|sort -u > /tmp/20190815.log date 格式化出年月等信息,拼接成路径 wc -l /tmp/20190815.log , 获取到行数 php /xxxxx/sendmail.ph

shell脚本,awk如何处理文件中上下关联的两行。

文件d.txt如下内容 ggg 1portals: 192.168.5.41:3260werew 2portals: 192.168.5.43:3260 如何把文件d.txt内容变为如下内容 ggg 192.168.5.41:3260werew 192.168.5.43:3260 解题思路: [[email protected] study]# awk '/port/{print a" "$2}{a=$1}' d.txt ggg 192.168.5.41:3260werew 192.1

C#替换文件中特定字符串,按照原来的编码格式保存

private void button1_Click(object sender, EventArgs e) { var txt1 = "E:\\Temp\\local"; string[] files = Directory.GetFiles(txt1, "*.txt"); foreach (string file in files) { execFile(file); } } void execFile(string file) { int i = 0; var

Linux shell脚本基础学习详细介绍(完整版)二

详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续. Linux shell脚本基础已经被分成好几个部分了,这里对控制流程的内容也就马上讲完了,这是最后一部分关于here document,这里举例稍微有点复杂,我们慢慢来分析这个复杂Linux shell脚本. 6. Here documents 当要将几行文字传递给一个命令时,here docu

Unix/Linux shell脚本中 “set -e” 的作用

"set -e" 是什么? 如下脚本: #!/bin/bash set -e command 1 command 2 ... 在脚本开头加上set -e,这句语句告诉bash如果任何语句的执行结果不是true则应该退出. "set -e" 作用是什么? (1)使用-e帮助你检查错误: (2)防止错误像滚雪球般变大导致一个致命的错误,而这些错误本应该在之前就被处理掉: (3)如果要增加可读性,可以使用set -o errexit,它的作用与set -e相同: &quo

Linux shell脚本中shift的用法说明

Linux shell脚本中shift的用法说明 shift命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本). 示例1:依次读取输入的参数并打印参数个数: run.sh: #!/bin/bash while [ $# != 0 ];do echo "第一个参数为:$1,参数个数为:$#" shift done 输入如下命令运行:run.sh a b c d e f 结果显示如下: 第一个参数为:a

linux下使用vim替换文件中的^M换行符

在linux下打开windows编辑过的文本,会出现由于换行符不一致而导致的内容格式错乱的问题.最常见的就是出现^M . 我出现的问题是:在windows编辑过的文件,传到linux上后再用vim打开,内容没有换行.也就是所有文件内容都在一行.然后再实际换行的位置多了个^M. 下面的方法是网上搜的.其中dos2unix还有一个相对应的unix2dos 1.使用dos2unix命令.一般的分发版本中都带有这个小工具(如果没有可以根据下面的连接去下载),使用起来很方便: $ dos2unix myf

《Linux Shell脚本攻略》 笔记 第三章:文件操作

<Linux Shell脚本攻略> 笔记 第三章:文件操作 1.生产任意大小的文件 [[email protected] dd_test]# [[email protected] dd_test]# dd if=/dev/zero of=junk.data bs=1k count=10 10+0 records in 10+0 records out 10240 bytes (10 kB) copied, 0.00137023 s, 7.5 MB/s 2.文件系统相关测试 [ -f $file

Linux shell脚本中调用另一个shell(exec、source、fork)

  在运行shell脚本时候,有三种方式来调用外部的脚本,exec(exec script.sh).source(source script.sh).fork(./script.sh) exec(exec /home/script.sh): 使用exec来调用脚本相当于在当前shell执行了一条命令,不会产生新的进程,被执行的脚本会继承当前shell的环境变量.但是当exec调用完毕后,当前shell也会结束,剩下的代码不会执行. source(source /home/script.sh) 使