sed 中的参数 s 替换
d 删除
p 打印
g 匹配此行所有
e ''单引号表示要执行的命令
eg:
sed -e 's/root/shrek/g' /etc/passwd 替换root为shrek包括替换多个匹配
sed -e '/hash/d' /etc/passwd 删除行中hash;/hash/是正则表达式
sed -n -e '/\<shrek\>/p' /etc/passwd 打印完全匹配sherk的行
sed -n -e '/\<shrek\>/s/bash/nologin/' /etc/passwd
sed -e '/^#/d' -e '/^$/d' /etc/passwd | wc -l 把文件中所有的#和空行都删除,^$表示已空行结尾就是空行;wc -l统计行数
//sed 正则表达式匹配
sed -i 's/^a.*b$/ccccc/' map.txt //把map.txt文件中以a开头b结尾的替换为cccc
注意:如果sed要替换的变量中有/分隔符的话,可以把分隔符换成别的来实现例如叹号!或者@符号
sed -i 's!wrapper.java.command=java!wrapper.java.command='"$dir"'!' ppg.conf //这里的变量dir中有分隔符/所以使用感叹号!
#!/bin/bash
dir=/home/jdk1.7.0_80/bin/java
for((i=0;i<=32;i++))
do
cd /home/ppg$i/conf/
#d=$[$i+8821];
# sed -i 's/ioserver.mtmsg.isack=0/ioserver.mtmsg.isack=1/' ppg.properties
#after given line append text
# c=`grep StrictHostKeyChecking /etc/ssh/ssh_config | wc -l`
# if [ $c -eq 1 ]; then
# sed -i -e '/# StrictHostKeyChecking ask/a\StrictHostKeyChecking no' /etc/ssh/ssh_config
# else
#sed -i 's/192.168.137.199/127.0.0.1/' ppg.properties
#sed -i 's/vm.hashnode_dim=3/vm.hashnode_dim=5/' ppg.properties
#sed -i 's/servlet.handler=8821/servlet.handler='"$d"'/' ppg.properties
sed -i 's!wrapper.java.command=java!wrapper.java.command='"$dir"'!' ppg.conf
#sed -i -e '/afs.data.ext=.afs/a\afs.hcnt.ext=.cnt' ppg.properties
#sed -i -e '/ppgsvr=localhost:8821/a\serviceName=ppg'"$i"'-vm.'"$i"'.'"$i"'-199' ppg.properties
#sed -i '/^afs.hcnt.*.cnt$/d' ppg.properties
#sed -i '/^shell./d' ppg.properties
# fi
done
shell中如果要把变量运算
例如a=1
a=$(($a+1))
a=$[$a+1]
let a++
let a+=1
((a++))
都可以实现变量加1操作
#d=$[$i+8821];//上面实例中d变量
sed做字符串处理时,在sed语句中要使用变量时,我们可以使用单引号中套双引号的方式
sed -i 's!wrapper.java.command=java!wrapper.java.command='"$dir"'!' ppg.conf
上例中dir变量
d 删除
p 打印
g 匹配此行所有
e ''单引号表示要执行的命令
eg:
sed -e 's/root/shrek/g' /etc/passwd 替换root为shrek包括替换多个匹配
sed -e '/hash/d' /etc/passwd 删除行中hash;/hash/是正则表达式
sed -n -e '/\<shrek\>/p' /etc/passwd 打印完全匹配sherk的行
sed -n -e '/\<shrek\>/s/bash/nologin/' /etc/passwd
sed -e '/^#/d' -e '/^$/d' /etc/passwd | wc -l 把文件中所有的#和空行都删除,^$表示已空行结尾就是空行;wc -l统计行数
//sed 正则表达式匹配
sed -i 's/^a.*b$/ccccc/' map.txt //把map.txt文件中以a开头b结尾的替换为cccc
注意:如果sed要替换的变量中有/分隔符的话,可以把分隔符换成别的来实现例如叹号!或者@符号
sed -i 's!wrapper.java.command=java!wrapper.java.command='"$dir"'!' ppg.conf //这里的变量dir中有分隔符/所以使用感叹号!
#!/bin/bash
dir=/home/jdk1.7.0_80/bin/java
for((i=0;i<=32;i++))
do
cd /home/ppg$i/conf/
#d=$[$i+8821];
# sed -i 's/ioserver.mtmsg.isack=0/ioserver.mtmsg.isack=1/' ppg.properties
#after given line append text
# c=`grep StrictHostKeyChecking /etc/ssh/ssh_config | wc -l`
# if [ $c -eq 1 ]; then
# sed -i -e '/# StrictHostKeyChecking ask/a\StrictHostKeyChecking no' /etc/ssh/ssh_config
# else
#sed -i 's/192.168.137.199/127.0.0.1/' ppg.properties
#sed -i 's/vm.hashnode_dim=3/vm.hashnode_dim=5/' ppg.properties
#sed -i 's/servlet.handler=8821/servlet.handler='"$d"'/' ppg.properties
sed -i 's!wrapper.java.command=java!wrapper.java.command='"$dir"'!' ppg.conf
#sed -i -e '/afs.data.ext=.afs/a\afs.hcnt.ext=.cnt' ppg.properties
#sed -i -e '/ppgsvr=localhost:8821/a\serviceName=ppg'"$i"'-vm.'"$i"'.'"$i"'-199' ppg.properties
#sed -i '/^afs.hcnt.*.cnt$/d' ppg.properties
#sed -i '/^shell./d' ppg.properties
# fi
done
shell中如果要把变量运算
例如a=1
a=$(($a+1))
a=$[$a+1]
let a++
let a+=1
((a++))
都可以实现变量加1操作
#d=$[$i+8821];//上面实例中d变量
sed做字符串处理时,在sed语句中要使用变量时,我们可以使用单引号中套双引号的方式
sed -i 's!wrapper.java.command=java!wrapper.java.command='"$dir"'!' ppg.conf
上例中dir变量
本文详细介绍了SED命令的基础用法及高级技巧,包括常见的参数如s替换、d删除、p打印等,并通过实例展示了如何进行字符串替换、行删除及变量运算。
475

被折叠的 条评论
为什么被折叠?



