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部分

 

posted @ 2024-12-16 11:20  zmm521  阅读(52)  评论(0)    收藏  举报