--截取文件abc.123.log
--一下结果都是abc.123
ls abc.123.log | awk -F'.' 'BEGIN{OFS="."} NF--'
ls abc.123.log | awk -F . 'BEGIN{OFS="."} NF--'
echo "abc.123.jpg" | awk -F . 'BEGIN{OFS="."}NF--'
echo "abc.123.jpg" | awk -F'.' 'BEGIN{OFS="."}NF--'
echo "abc.123.jpg" | awk -F"." 'BEGIN{OFS="."}NF--'
echo "abc.123.jpg" | awk -F "." 'BEGIN{OFS="."}NF--'
A=abc.123.jpg
name=${A%.*}
echo $name
abc.123
echo ${A%%.*}
abc
仅去除扩展名的话,其实一个%就行了,非贪婪匹配
--------------------------------------------------------------------------
awk '{}' /etc/passwd
awk '/root/{print $2,$1}'
awk -F: '$1~/root/{print $1}' /etc/passwd 第一列匹配root
awk 'BEGIN{a=1;print a}' 输出1
awk 'BEGIN{a=1;print a,a}' 输出1 1
awk 'BEGIN{a=1;print a a}' 输出11
awk 'BEGIN{a=1;print "a"}' 输出a
awk '{a=1;b=2;print $(a+b)}'<<<"aaa bbb ccc" 输出ccc
awk '/正则/{} /正则/{} /正则/{}' 执行多条指令
awk 'BEGIN{OFS=":"}{print $1,$2}' 改变默认输出的分割符为:,结果为moma:68.5
awk 'BEGIN{FS=":"}{print $1,$2}' 改变默认输入的分割符为:
printf:格式化输出
awk '{printf("\n"$0"\n")}'
awk '{printf("%s%s",$1,$2)}'
awk '{printf("%10s",$1)}' 使输出的字符串占10个宽度,默认靠右对齐
awk '{printf("%-10s",$1)}' 使输出的字符串占10个宽度,靠左对齐
awk '{printf("%10.3f",3.3333333)}' 使输出的字符串占10个宽度,,小数点后要三位,靠右对齐
awk '{a=123.456;printf("%d",a)}' 强制转换为整数,输出123
传递参数:
var=123
awk -v awkvar=$var '{print awkvar}'
awk {print "'$var'"}'
数组:
不必指明数组大小,下标可以为任意字符串
awk '{user[NR]=$0}END{print user[5]}'
awk '{IP[192.168.1.254]=254;IP[192.168.1.3]=3}END{for(i in IP){print i;print IP[i]}}' score.txt 打印下标不规整的数组
awk '{IP[$1]++}END{for(i in IP)print IP[i],i}' /etc/httpd/logs/access_log | sort -nr 统计日志中IP访问数量
awk 'BEGIN{print ENVIRON["USER"]}' 数组中使用环境变量
函数:
awk 'BEGIN{a=11.22;int(a);print a,int(a)}' int函数,结果为:11.22 11
a=12313;print length(a) 取字符串的长度
awk 'BEGIN{t="hellolinux";r="x";s="hahaha";print sub(r,s,t),t}' t原字符串,r要匹配的字符串,替换为s;替换成功返回1,匹配第一次出现
awk 'BEGIN{t="hellolinux";r="x";s="hahaha";print gsub(r,s,t),t}' t原字符串,r要匹配的字符串,替换为s;替换成功返回1,全局匹配
awk 'BEGIN{ while(getline < "/etc/shadow" > 0) ;}'
BEGIN{FS=":";while((getline<"/etc/passwd")>0)name[$1]=$3}
{for(i in name){if(i==$1)print name[i],$2}}
awk 'BEGIN{
# a=5
}
{
if(x~/abc/){ 匹配
}
# if(a>3){
# print $1
# }
# grade=(avg>=60)?"Pass":"Fail"
# while(a>3){
# print $1
# }
sum=0
for(i=2;i<=NF;i++){
sum+=$i
}
print $1,sum/(NF-1)
}
END{}' score.txt
--------------------------------------------------
系统启动过程:
grub -kernel initrd.img init /etc/inittab /etc/rc.d/rc.sysinit(/lib/module) rc5 rc.local server login /etc/profile
系统关闭过程
~/.bash_logout注销 关闭server killall杀掉进程 关机
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22661144/viewspace-1430654/
,如需转载,请注明出处,否则将追究法律责任。