vim中的sed常用技巧 & shell脚本中的sed常用技巧
1)vim中的sed常用技巧
vim+sed技巧
vim的范围使用
1,$ 表示范围行首至行尾
.,$ 表示范围当前行至行尾
% 表示范围时表示整个文件,如果不表示范围时表示当前文件名
在所有行中查找字符串出现的次数
: %s/查找的字符串/&/gn
在指定的m和n行范围之间查找字符串出现的次数
: m,n s/字符串/&/gn
指定范围(0,$代表全文)搜索替换字符串、不提示确认
: 0,$ s/40px/35px/g
指定范围(0,$代表全文)搜索替换字符串、提前逐个提示确认
: 0,$ s/40px/35px/gc
2)shell脚本中的sed常用技巧
eg1: 针对变量的内容进行正则查找和替换
#!/bin/sh
ip1=$1
ip2=$2
if [ $# != 2 ]; then
echo please use: $0 ip1 ip2
exit 1
fi
echo ip1=$ip1
echo ip2=$ip2
net1=$(echo $ip1 | sed -E "s/\.[0-9]{1,3}$/\.0/g")
net2=$(echo $ip2 | sed -E "s/\.[0-9]{1,3}$/\.0/g")
echo $net1
echo $net2
[root@localhost home]# ./ip.sh 1.1.1.1 2.2.2.2
ip1=1.1.1.1
ip2=2.2.2.2
1.1.1.0
2.2.2.0
eg2:针对文件的内容进行正则查找替换
#!/bin/sh
BASE=/opt/testApp
file="$BASE/plugins/myPlugin/myApp.properties"
if [ ! -f $file ]; then
echo "ERROR: file not found: $file"
exit
fi
if [ "$#" -eq 1 -a "$1" = "-h" ] || [ "$#" -ne 0 -a "$#" -ne 1 ]; then
echo " please use: $0 [retryNum] , valid retryNum: 8 ~ 100"
echo " eg: $0 20 , without retryNum, the default retryNum is 20"
exit
fi
retryNum=20
pattern='^[0-9]+$'
if [ "$#" -eq 1 ]; then
if [[ ! "$1" =~ $pattern ]]; then
echo "ERROR: invalid retryNum: $1 ! valid retryNum: 8 ~ 100"
exit
else
if [ "$1" -gt 100 -o "$1" -lt 8 ]; then
echo "ERROR: invalid retryNum: $1 ! valid retryNum: 8 ~ 100"
exit
fi
retryNum=$1
fi
fi
echo "value(old): $(cat $file |grep maxretryNum)"
sed -i s/maxretryNum=.*/maxretryNum=$retryNum/g $file
echo "value(new): $(cat $file |grep maxretryNum)"