| 关键词: nbsp print awk passwd etc 字符串 文件 输出 printf root |
1.杀掉MYSQL SHELLps aux|grep mysql|grep -v grep|awk '{print $2}'|xargs kill -9 2.删除当前目录下0字节的文件find -type f -size 0 -exec rm -rf {} \; 3.匹配当data里包含"donald",输出第4列awk '/donald/ {print $4}' data扩展1:awk '/donald|chin/ {print $1, $2}' data扩展2:awk '/a[rl]/ {print $1, $2}' data 使用"n"而不是空格做为分隔符awk 'FS="n" {print $1}' data 4.截取对应的列数awk -F":" '{ print $1 $7 }' /etc/passwd 5.对域名进行添加www.的shellawk '{print"www."$1}' yuming.txt >yuming2.txt 6.清理maillog日志find . -name maillog | xargs echo " " >maillog 7.1.txt文件前面添加序号awk '{print NR,$0}' 1.txt 8.1.txt匹配test开头的行后,将字段2和字段3相加后输出结果awk '$1 ~/test/{count = $2 + $3;print count}' 1.txt 9.用grep命令在当前目录下的所有普通文件中搜索hostnames这个词find . -name \* -type f -print |xargs grep "hostname"注意,在上面的例子中, \用来取消find命令中的*在shell中的特殊含义 10.文件删除清理find . -name "*.conf" -mtime +5 -ok rm { } \;< rm ... ./conf/httpd.conf > ? n按y键删除文件,按n键不删除 11.在/var/log下拷贝小于100K的文件到/tmp下,如果有失败的发送邮件到[email protected],用shell/perl/python来实现。#!/bin/bashSDIR=/var/log/DDIR=/tmp/TMPFILE=/tmp/test.txtfind $SDIR -size -100k -type f > $TMPFILEwhile read F_NAMEdo cp -r $F_NAME $DDIR if [ $? -eq 0 ] then echo "ok" > /dev/null 2>&1 else echo "cp is failed " | mail -s "Note:cp is failed ! " [email protected] fidone < $TMPFILE 12. 根据下面的信息提取每个人的总分 输出到/home/total.txtoldboy 15 98kqzj 23 87wodi 16 89 awk '{print $1,$2+$3}' infor >/home/tital.txt 13.在不影响MYSQL正常服务的情况下,如何导出MYSQL数据mysqldump -all-databases >allbackupfile.sql 备份数据库mysql -hhostname -uusername -ppassword databasename < backupfile.sql 还原数据库 mysqldump -hhostname -uusername -ppassword databasename |gzip > backupfile.sql.gz 压缩备份数据库 gunzip < bckupfile.sql.gz |mysql -uusername -ppassword databasename 还原压缩的文件包 mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 >backupfile.sql 备份单个数据库表 mysqldump -hhostname -uusername -ppassword -databases databasename1 atabasename2 databasename3 >multibackupfile.sql 备份多个数据库 mysqldump -no-data -databases databasename1 databasename2 databasename3>structurbackupfile.sql 备份数据库结构 14.在一个文件夹下建立类似如下规律性的文件夹:11 12 13 14 15 21 22 23 24 25 31 32 33 34 35 41 42 43 44 45 51 52 53 54 55 #!/bin/sh for i in `echo {1..5}{1..5}`;domkdir -p ./$idone 或#!/bin/bash#for i in `seq 11 55`;for i in $(seq 11 55)do echo $i; mkdir -p ./$i;done 15.统计末年某月的天数cal 09 2008 | xargs | awk '{print $NF}'cal 09 2008 |sed -n '3,$p' |awk 'BEGIN{sum=0}{sum+=NF}END{print sum}' 16.统计文件大小的shellls -l $* | awk 'BEGIN { print "BYTES", "\t", "FILE" }{ sum += $5 ++filenum print $5, "\t", $9 }END { print "Total: ", sum, "bytes (" filenum " files)" }' 17.awk(基础)====================================================1.抽取域awk -F: '{print $1}' /etc/passwd 2.保存输出awk -F: '{print $1}' /etc/passwd | tee user 使用tee命令,在输出文件的同时,输出到屏幕 使用标准输出awk -F: '{print $1}' /etc/passwd >user3 4.打印所有记录awk -F: '{print $0}' /etc/passwd 5.打印单独记录awk -F: '{print $1,$4}' /etc/passwd 6.打印报告头awk -F: 'BEGIN {print "NAME "} {print $1}' /etc/passwd 7.打印结尾awk -F: '{print $1} END {print "this is all users"}' /etc/passwd 条件操作符1.匹配awk -F: '{if($1~/root/) print }' /etc/passwd //{if($1~/root/) print}表示如果field1包含root,打印它 2.精确匹配使用等号 ==awk -F: '{if($3=="0") print }' /etc/passwd 3.不匹配!~awk -F: '{if($1!~/linuxtone/) print }' /etc/passwd !=精确不匹配awk -F: '{if($1!="linuxtone") print }' /etc/passwd 4.小于<5.小于等于<=6.大于>.........7.设置大小写awk '/[Rr]oot/' /etc/passwd 8.任意字符awk -F: '{if($1~/^...t/) print}' /etc/passwd //^...t表示第四个字幕是t 9.或关系匹配awk -F: '{if ($1~/(squid|nagios)/) print}' /etc/passwd 10.行首awk '/^root/' /etc/passwd // ^root(行首包含root) 11.AND &&awk -F: '{if($1=="root" && $3=="0") print}' /etc/passwd 12.OR || 内置变量:ARCC 命令行参数个数ARGV 命令行参数排列ENVIRON 支持队列中系统环境变量的使用FNR 浏览文件的记录数FS 置顶分隔符,等价于-FNF 浏览记录的域的个数NR 已读的记录数OFS 输出域分隔符ORS 输出记录分隔符RS 控制记录分隔符 打印有多少行记录awk 'END {print NR}' /etc/passwd 设置输入域到变量名awk -F: '{name=$1; path=$7; if(name~/root/) print name "\tpath is:" path}' /etc/passwd 域值比较操作awk '{if($6<$7) print $0}' input-file 修改文本域只显示修改改记录awk -F: '{if($1=="nagios") {$1="nagios server" ; print }}' /etc/passwd 文件长度相加ls -l|awk '/^[^d]/ {print $9"\t" $5} {tot+=$5} END {print "total kb:"tot}' 内置的字符窜函数gsub(r,s) 在整个$0中用s替代rgsub(r,s,t) 在整个t中用s替代rindex(s,t) 返回s中字符串t的第一位置length(s) 返回s长度match(s,r) 测试s中是否包含匹配r的字符串split(s,a,fs) 在fs上将s分成序列asub(s, ) 用$0中最左边也是最长的字符串替代subtr(s,p) 返回字符串s中从p开始的后缀部分substr(s,p,n) 返回字符串s中从p开始长度为n的后缀部分 1.gsubawk 'gsub(/^root/,"netseek") {print}' /etc/passwd 将与root开头的root替换为netseek awk 'gsub(/0/,2) {print}' /etc/fstab awk '{print gsub(/0/,2) $0}' /etc/fstab 2.indexawk 'BEGIN {print index("root","o")}' 查询字符串root中o出现的第一位置 awk -F: '$1=="root" {print index($1,"o")" "$1}' /etc/passwd awk -F: '{print index($1,"o") $1}' /etc/passwd 3.lengthawk -F: '{print length($1)'} /etc/passwd awk -F: '$1=="root" {print length($1)}' /etc/passwd 4.match (在ANCD中查找C的位置)awk 'BEGIN {print match("ANCD",/C/)}' 5.split返回字符串数组元素个数awk 'BEGIN {print split("123#456#789", myarray, "#")}' 6.sub 只能替换指定域的第一个0awk 'sub(/0/,2) {print }' /etc/fstab 7.substr 按照起始位置及长度返回字符串的一部分awk 'BEGIN {print substr("www.linuxtone.org",5,9)}' //第5个字符开始,取9个字符。 awk 'BEGIN {print substr("www.linuxtone.org",5)}' //第5个位置开始,取后面的所有. 字符串屏蔽序列\b 退格键\f 走纸换页 新行 回车\t tab\c 任意其他特殊字符\ddd 八进制 很简单的例子awk -F: '{print $1,"\b"$2,"\t"$3}' /etc/passwd 输出函数printf(注意是printf不是print,两者效果不同的)printf函数拥有几种不同的格式化输出功能 printf修饰符- 左对齐Width 域的步长0表示0步长.prec 最大字符串长度,或小数点右边的位数 awk printf格式%c ASCII字符%d 整数%e 浮点数,科学计数法%f 浮点数%g awk决定使用哪种浮点数转换,e或者f%o 八进制数%s 字符串%x 十六进制数 1.字符串转换echo "65" | awk '{printf"%c ",$0}' awk 'BEGIN {printf "%c ",65}' awk 'BEGIN {printf "%f ",999}' 2.格式化输出awk -F: '{printf "%-15s %s ",$1,$3}' /etc/passwd awk -F: 'BEGIN {printf"USER\t\tUID "} {printf "%-15s %s ",$1,$3}' /etc/passwd 3.向一行awk命令传值who | awk '{if ($1 == user) print $1 " you are connected to:" $2}' user=$LOGNAME 4.awk脚本文件 (在文件名字后面加后缀.awk方便区分)#!/bin/awk -fBEGIN{ FS=":" print "User\t\tUID" print"____________________________"} {printf "%-15s %s ",$1,$3} END{ print "END" }===============================================================================================================================================18.从a.log文件中提取包含"WARNING"或"FATAL",同时不包含"IGNOR"的行,然后提取以":"分割的第 5个字段grep -E 'WARNING|FATAL' a.log|grep -v ignor |awk -F ":" '{print $5}' |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|