shell专题

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sun_xuegang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值