sed命令使用
sed -i 's/原字符串/新字符串/g' *
g的意思是进行全部替换
sed -i 's/kobe/jordan/g' *
sed -i 's/jordan/kobe/2p' *
p的意思是将改行再复制一行
sed -i 's/kobe/jordan/2' *
将每一行第二次出现的kobe替换为jordan!!
替换文本中第一次出现的字符串
sed -i '0,/kobe/s//jordan/g' kobe.config
========================================================
awk命令使用
打印ps命令输出的第一列数据
ps | awk '{print $1}'
打印ps 命令输出的第一列,第4列数据,从第二行开始打印
ps | awk -F " " '{print $1"======"$4}' | tail -n +2
打印kobe.config以:为分隔符的第一列
awk -F ":" '{print $1}' kobe.config
打印kobe.config以:为分隔符的第一列,第五列,第六列
awk -F ":" '{print $1,$5,$6}' kobe.config
打印kobe.config以:为分隔符的第一列,第五列,第六列,中间用------和========连接
awk -F ":" '{print $1"-------"$5"==========="$6}' fuiou.config
打印以/为分隔符的最后一列 NF为awk内置的变量 表示最后一列
awk -F "/" '{print $NF}' /etc/shells
打印以/为分隔符的最后一列 NF为awk内置的变量 表示最后一列 ,只打印以/开头的内容
^表示以/为开头的,\表示转义
awk -F "/" '/^\// {print $NF}' /etc/shells
在上面命令的基础上去掉重名的 加上sort和uniq参数,因为uniq只会去掉相邻行重复的数据,所以需要先排序再进行去重
awk -F "/" '/^\// {print $NF}' /etc/shells | sort | uniq
打印所有列长度和大于10的数据
awk 'length($0)>10' /etc/shells
只打印内容等于xxx的那一行 或者不等于xxx的那一行
awk '{if($0=="/usr/bin/sh") print $0}' /etc/shells
awk '{if($0!="/usr/bin/sh") print $0}' /etc/shells
awk命令与for循环结合使用
awk 'BEGIN{for(i=0;i<=24;i++) print i}'
awk 'BEGIN{for(i=0;i<=24;i++) print "这个数字为:",i,"它的平方为:",i*i}'
awk与substr结合,截取掉指定长度的字符串
awk '{print substr($0,5)}' /etc/shells
awk与match和正则表达式结合,只打印符合条件的字符串
只打印/usr开头的字符串,^表示开头,\表示转义
也可以再match前面加上!,表示不以这个为开头
awk 'match($0,/^\/usr/) {print $0}' /etc/shells
也可以再match前面加上!,表示不以这个为开头
awk '!match($0,/^\/usr/) {print $0}' /etc/shells
在print命令后面加上NR,给每一行打印的数据加上行号========>>>更加美观
awk '!match($0,/^\/usr/) {print NR,$0}' /etc/shells