awk sed grep find----Linux命令
一、find 命令----找文件或目录
1、find /home/ -name “test.txt” #----在home路径下查找名字为test.txt的文件或目录 2、find /home/ -name “*.txt” #---在home路径下查找名字以.txt结尾的文件或目录 3、find /home/ -name “*.txt” -type f #---在home路径下查找名字以.txt结尾的文件 4、find /home/ -name “*.txt” -type d #---在home路径下查找名字以.txt结尾的目录 5、find . -name “*.txt” -type d #---在当前路径下查找名字以.txt结尾的目录 6、find /home/ -name “*.txt” -type d -mtime +30 #---在home路径下查找名字以.txt结尾且30天以前建的目录 7、find /home/ -name “*.txt” -type d -mtime -1 #---在home路径下查找名字以.txt结尾且1天以内建的目录 8、find /home/ -name “test.txt” | xargs rm -rf {} \; #---在home路径下查找名字为test.txt的文件或目录并删除,其中{}为管道符前面的结果, \;是固定的写法 9、find /home/ -name “test.txt” -exec cp {} /tmp/ \; #---在home路径下查找名字为test.txt的文件或目录并复制到tmp路径下,其中{}为管道符前面的结果, \;是固定的写法,另外exec比xargs用的范围更广,建议用exec 10、find /home/ -name “test.txt” -size +10k #---在home路径下查找名字为test.txt的文件或目录且大于10k 11、find /home/ -name “test.txt” -size +10M #---在home路径下查找名字为test.txt的文件或目录且大于10M,注意M大写 12、find /home/ -name “test.txt” -perm 755 #---在home路径下查找名字为test.txt的文件或目录且权限为755,其中文件默认的权限为644,目录默认的权限是755
二、grep ---匹配文件内内容
备注:正则是直接在‘’中写的,条件单引号或双引号均可
1、grep “root” /etc/passwd #----匹配passwd文件中root内容行 2、grep –color “root” /etc/passwd #----匹配passwd文件中root内容行且root标颜色 3、grep “^root” /etc/passwd #----匹配passwd文件中root开头内容行 4、grep “root$” /etc/passwd #----匹配passwd文件中root结尾内容行 5、grep -V “#” /etc/passwd #----匹配passwd文件中非#内容行 6、grep -n “root” /etc/passwd #----匹配passwd文件中root内容行且显示行号 7、egrep “[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$” text.txt #----匹配文件中IP 8、egrep “[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$” text.txt | wc -l #----匹配文件中IP且统计个数
三、awk ---数据统计
备注:awk默认是使用空格进行分割列的,如果需要特殊定义分割方式需要 -F‘’ ” 进行自定义,主要条件是单引号
1、awk ‘{print $1}’ text #----打印文件第一列 2、awk ‘{print $NF}’ text #----打印最后一列 3、awk 'NF>1{print $(NF-1)}' text #----打印倒数第二列 4、awk ‘{print $1,$NF}’ text #----打印1-最后一列 5、awk ‘{print $1’:’$NF}’text #----打印1-最后一列且中间加:号 6、awk -F”:” ‘{print $1}’ text #----打印以冒号分割的第一列
7、awk -F":" -v i=1 '{print $3+i}' text #----打印第3列且加上1 -v 是定义变量
8、awk -F":" 'BEGIN {print "xxx"} {print $1,$7} END {print "yyyy"}' text #-----打印1和7列且在文件第一行前加xxx,在文件的末尾加yyyy
四、sed ---编辑文本
备注:如果需要真实改文件,需要重定向一下,另外sed的正则在两个/之间,条件单引号
1、sed ‘s/xx/yy/1’ test.txt > test.txt #-----替换文件中第一行的xx为yy 2、sed ‘s/xx/yy/g’ test.txt > test.txt #-----替换文件中所有的xx为yy 3、sed ‘2a ===’ test.txt >test.txt #----在文件的第二行后增加等号行 4、sed ‘/wo/d’ test.txt >test.txt #----删除文件中包含wo的行 5、sed -e ‘2d’ -e ‘s/xx/yy/g’ text.txt >test.txt #删除文件第二行且把文件中所有的xx替换为yy 备注:-e 可连接多个条件