# 列出当前目录及子目录下全部文件和文件夹 find . # 在/home目录下查找以.txt结尾的文件名,-i表示忽略大小写 find /home -iname "*.txt"
find命令的详细介绍html
# test.txt 2 this is a test 3 Are you like awk This's a test 10 There are orange,apple,mongo
# 指定,为分隔符,在test中查找,而且输出分隔以后的每行的第1、第四个元素。分隔符默认为空格(包括tab) awk -F, '{print $1,$2}' test.txt 2 this is a test 3 Are you like awk This's a test 10 There are orange apple # 格式化输出,第一个元素和第四个元素的占位 awk '{printf "%-8s %-10s\n",$1,$4}' log.txt 2 a 3 like This's 10 orange,apple,mongo # 设置变量-v参数,a=1,若是原有元素为非数字则进行运算时为0 awk -va=1 '{print $1,$1+a}' log.txt 2 3 3 4 This's 1 10 11 # 将awk命令存为脚本保存,使用-f参数做为容许脚本 awk -f cal.awk log.txt # 过滤第一项大于2的行(很神奇的是,这里的非数字不能做为0来比较) awk '$1>2' log.txt 3 Are you like awk This's a test 10 There are orange,apple,mongo # 过滤第一列大于2而且第二列等于'Are'的行 awk '$1>2 && $2=="Are" {print $1,$2,$3}' log.txt 3 Are you
awk命令详细介绍linux
# old.txt中的old_abc换为new_abc,s表示替换,g表示每行中找到的字符都须要被替换,不然只替换每行第一次出现的字符, '1,2s'表示第一行到第二行的全部行 # sed不能在原有文本基础上进行替换,因此必须生成新的文件new.txt sed "1,2s/old_abc/new_abc/g" old.txt > new.txt # 删除行号范围内指定的行 sed -i "1,2d" old.txt # 删除模式匹配的行 sed -i "/abc/d" old.txt # 删除与替换同时进行,加上-e参数,替换old_abc为new_abc,而且删除第二行 sed -i -e "s/old_abc/new_abc/g" -e "2d" old.txt # s指令后面并不必定使用/做为分隔符,能够加上#,好比s#/
Global Regular Expression Print(全局正则表达式打印)正则表达式
# 输出test.txt中搜索含有'abc'或'Abc'的行 grep '[aA]bc' test.txt # 输出test.txt中搜索含有'abc'的行,-i表示忽略大小写 grep -i 'abc' test.txt # 输出test.txt中搜索含有'abc'的前三行、后三行,-A(After)匹配行以后,-B(Before)匹配行以前 grep "abc" -A 3 -B 3 test.txt
grep通常结合其余命令来用bash
grep也能够使用正则进行匹配app
命令合成工具
# 在当前目录下查找名称后缀为.log的文件,而且将输出转换为一行(xargs),找到abc。-i表示忽略大小写,-n表示输出行号 find . -name "*.log" | xargs grep -i -n "abc" # -l输出匹配的文件名,不输出匹配行;-R表示递归目录;-Z表示文件名间使用null进行分隔 # -0表示xargs只格式化一个文件 fgrep -lRZ "1.2.3.4" . | xargs -0 sed -i -e "s/1.2.3.4/5.6.7.8"