1.将字符串中的 , 变成","
str1="abc,def,ghi,jkl"
str2=\"${str1/,/\",\"}\" #只会把第一个 , 变为","
echo $str2
str3=\"${str1//,/\",\"}\" #所有的, 变为","
echo $str3
2.将文本文件的回车换行去掉 转换为其他字符
# cat 1.txt
123
456
789
# str=`sed ':a;N;$!ba;s/\n/n/g' 1.txt` #将回车换行 转换为 n
# echo $str
123n456n789
3.以某个字符切割 获取最后一段
# str="ab.cd.ef.gh"
# res=`echo $str | awk -F"." '{print $NF}'`
# echo $res
gh
4.在文件中替换字符串
function replace_str(){ #
old_str="$1"
new_str="$2"
file="$3"
sed -i "s#$old_str#$new_str#g" $file
}
5.指定行 内容替换
function replace_str_in_line(){
old_str="$1"
new_str="$2"
line="$3"
file="$4"
sed -i "${line}s#${old_str}#${new_str}#g" $file
}
6.根据字符串 获取行号
function get_line_by_str(){
str="$1"
file="$2"
sed -n -e "/$str/=" $file
}
7.删除指定行
function del_str_by_line(){
line="$1"
file="$2"
sed -i "${line}d" $file
}
8.在指定行后面加字符串
function add_str_after_line(){
str="$1"
line="$2"
file="$3"
sed -i "N;${line}a${str}" $file
}
9在指定字符串前面加字符串
function add_str_before_line(){
str="$1"
line="$2"
file="$3"
sed -i "N;${line}i${str}" $file
}
10.两个字符串 去除其中包含的字符串 例如:cluster=“192.168.19.21\n192.168.19.22\n192.168.19.23” ip=“192.168.19.21” 去除cluster中的ip
function str_distinct(){
long_str="$1"
short_str="$2"
str=""
for i in `echo -e "$cluster"`
do
if [ "$i" != "$ip" ];then
tmp="${i},"
str="$str""$tmp"
fi
done
str=`echo "$str"|sed 's/.$//'`
echo $str
}
11.字符串去掉最后一个字符
# str=abcdef
# str=`echo $str|sed 's/.$//'`
# echo $str
abcde
12.判断虚机的端口号是否开启
res=`echo ""| telnet 192.168.19.33 22 2>/dev/null| grep "\^]"|wc -l` #返回值1 表示开启 0表示未开启
13 有两列数据 将第一列相同数据 的第二列相加
# cat 1.txt
Tom 22
Jain 33
Tom 21
Peter 32
Mike 43
Peter 43
# awk '{sum[$1]+=$2}END{for(c in sum){print c,sum[c]}}' 1.txt
Jain 33
Tom 43
Mike 43
Peter 75
# cat 2.txt #将 ‘to’前面相同的 倒数第二列相加
Tue Jan 10 09:52:29 2017; TCP; eth0; 46 bytes; from 112.90.135.238:80 to 192.168.222.129:46015; FIN sent; 12 packets, 7430 bytes, avg flow rate 1.97 kbits/s
Tue Jan 10 09:52:29 2017; TCP; eth0; 46 bytes; from 112.90.135.238:80 to 192.168.222.129:46019; FIN sent; 16 packets, 14089 bytes, avg flow rate 3.73 kbits/s
Tue Jan 10 09:52:29 2017; TCP; eth0; 46 bytes; from 112.90.135.238:80 to 192.168.222.129:46017; FIN sent; 32 packets, 33193 bytes, avg flow rate 8.83 kbits/s
# awk '{match($0,"^(.* to )(.*rate )",t);a[t[1]]+=$(NF-1);b[t[1]]=t[1]t[2]}END{for(i in a)print b[i]a[i]" kbits/s"}' 2.txt
Tue Jan 10 09:52:29 2017; TCP; eth0; 46 bytes; from 112.90.135.238:80 to 192.168.222.129:46017; FIN sent; 32 packets, 33193 bytes, avg flow rate 14.53 kbits/s