linux find&sed/awk/grep/cut命令
1.find命令
find [path] [expression],默认路径为当前目录
N可以是+N或者-N或者N
-name 匹配模式:文件全名或者模糊查询
-type [dfl]:文件类型, d:directory, f:file, l:ln
-mtime N:最后一次修改文件的时间点,+2---超过2天的, 2---2天前,-2---2天内,
-size N[bkMG]: 根据大小查找, +11k---大于11k的,11k---等于11k的, -11k---小于11k的
-path PATTERN: 按路径模式匹配文件,它支持通配符来匹配完整的文件路径
1.1、查找指定文件名/模糊文件名
find / -name {filename}
find /opt/ -name SIT_AT*
1.2、查找当前目录文件
find -name {filename}
1.3、查找指定类型-普通文件
find /opt/ -type f
1.4、根据时间查找
# 查找30天前的
find /logs/ -type f -mtime +30
1.5、根据大小查找
# 查找大于11k的
find -type f -size +11k
1.6、查找到的多个文件删除
# 删除查到的30天前的文件
find -type f -mtime +30 | xargs rm
或者 使用find自带actions
find -type f -mtime +30 -delete
1.7、根据部分路径查找
# 查找部分路径的全部路径
find / -path */dir2/log/run.log
# 或者和-name组合,
find / -path */dir2/* -name run.log
2.grep命令
2.1 查找文件中某个字段
# 查找有该字段的行
grep Chassis bmc_sel.log
# 忽略大小写查找有该字段的行
grep -i chassis bmc_sel.log
# 查找有A字段或者B字段的行
grep -iE 'chassis|acpi' bmc_sel.log
# 查找没有A字段的行
grep -v Chassis bmc_sel.log
2.2 返回包含A字段的行及之前n行或之后n行
#返回A字段的行及之前n行
grep -B 5 Chassis bmc_sel.log
#返回A字段的行及之后n行
grep -A 5 Chassis bmc_sel.log
2.3 输出时显示行号
# 输出包含字段的行及行号
grep -n Chassis bmc_sel.log
2.4 多个文件里进行查找
# 多个文件里进行查找包含字段的行
grep -r "100.21.2.124" ./builds/*/fileParameters/config
2.5 模糊字段查找
# 字段-正则表达式
commad | grep -iE "Conn.* found"
2.6 只显示行中匹配到的部分
# 只显示行中匹配到的字段, 执行以下命令返回facturer:Ch
echo 'Maunfacturer:Ch' | grep -oE 'facturer:.*'
2.7 行中匹配到的部分再丢失一部分
# 执行以下命令返回Ch
echo 'Maunfacturer:Ch' | grep -oP 'facturer:\K.*'
3.sed命令
3.1、去掉每行开头空格,去掉所有空格
# 去掉每行开头空格
| sed 's/^\s*//'
# 去掉所有空格
| sed 's/\s*//g'
3.2 直接替换修改文件
# 替换修改文件,所有字段A替换为字段B
sed -i 's/A/B/g' test.log
3.3 打印指定的行的内容
# 打印文件或命令返回第5-9行到终端
sed -n "5,9p" example.txt command | sed -n "5,9p"
# 删除命令返回第一行其余打印到终端
command | sed '1d'
4.awk命令
4.1、取其中一列,几列值
awk '{print $2, $6}'
4.2、取最后一列,倒数几个列,
awk '{print $NF}'
#倒数第三列
awk '{print $(NF-2)}'
4.3、过滤出数字开头的第一列
awk '$1~/^[0-9]+/{print $1}'
4.4、替换某列为给定值
awk '{$2="";print}'
awk '{$2="";print $0}'
4.5、计算某列平均值
awk '{x+=$2}END{print x/NR}'
4.6、判断某列为值时,打印某列
# 查看进程状态为"R+",打印整行
ps aux | awk '$8=="R+" {print $0}'
5.cut命令
5.1、取每行某几个字符
# 取每行第6个字符
| cut -c 6
# 取每行第6,8个字符
| cut -c 6,8
# 取每行第6~8个字符
| cut -c 6-8
cut -d':' -f2 以冒号为分隔符,取第2部分

浙公网安备 33010602011771号