要想Linux玩的溜, 三剑客必须会!

要想Linux玩的溜, 三剑客必须会!

无论是日常操作还是写shell, 三剑客用的不比if、for用的少。也许你只用过find仅查找文件、目录, 其实它还可以对查找的结果进行拷贝和删除等操作; 当我们看着黑窗口中满屏找我们想要信息时grep是最好的助手, 除了高亮显示我们需要的信息,grep还可使用正则匹配,包括统计个数;sedawk功能也很强大,sed擅长以行为单位修改文件(这些通常是配置文件),awk通常用来统计,对以某个分割符分割的文件可以按列操作。说实话,想写好的shell脚本,如果不学三剑客,那还是别学Linux了!

下面进入命令正题。

find

用于快速查找目录和文件。
格式:

  • find <search_dir> [option] [option] ...
  • find <start_dir> -maxdepth <n> -mtime <+-day> -type <type> -name <"name">

常用操作:

# 找到并删除
# 1)加参数 -delete
# 2)使用-exec
find ./ -type d -exec rm -rf {} \;
find ./ -type d -exec |xargs rm -rf
# 3)提前执行find方法
rm -rf `find xxxx`
rm -rf $(find xxx)

# 找到并复制
find ./ -type d |xargs -i cp {}  /tem/backup	# -i xargs转化后插入到{}
find ./ -type d |xargs cp -t /tem/backup

# 找到并移动
find ./ -type d |xargs -i mv {}  /tem/backup	# -i xargs转化后插入到{}
find ./ -type d |xargs mv-t /tem/backup			# -t 指定移动目录
find ./ -type d -exec mv -rf {} \;

参数:

  • -maxdepth 最大递归深度
  • -mindepth 最小递归深度
  • -type 指定查找类型,f file, d director
  • -name指定名称
  • -size
    • b Byte(default)
    • K 1024Byte
    • M
    • G
  • -perm 权限查找 例:-perm 644
  • -delete 找到并删除
  • -exec 运行简单命令
    • find ./ -type f -name "*.txt" -exec rm -rf {} \;
      • {} 把查找到的内容放在其中
      • \ ; 转义“;”号
    • find ./ -type f -name "*.txt" -exec cp {} /tmp \;
      • 找出并删除/复制
  • -mtime
    * +7 7天以前
    * -7 最近七天
    * 7 正好前面七天

-mtime 参数参考图:
在这里插入图片描述

grep

grep是常用的搜索命令,可以说除了cd,ls等命令外最常用的就是它了,强大的搜索功能,同时搜索出来的内容还可以高亮显示。
使用格式:

  • grep <关键字> <文件> 在文件中搜索“关键字”
  • | grep <关键字> 在管道流读取的信息中搜索“关键字”

应用场景:

  • 日志关键信息检索
  • 配置文件检索,排除
  • 输出信息检索
  • 关键信息排除

使用示例:

#所给样例a.txt内容
100
1000
123456
abcdef
ABCDEF

# 直接查找文件信息
grep 100 a.txt
# 输出
100
1000

# 管道流查看信息
cat a.txt | grep 100
100
1000

# 使用正则匹配
grep -E "^100$" a.txt  	# 当确定用正则是均加上-E参数,否则有些正则通配符无法匹配

# 排除匹配关键字的行
grep -v "100" a.txt
123456
abcdef
ABCDEF

# 统计关键字匹配次数
grep -c "100" a.txt

参数:

  • -B before,同时显示查找信息的前面N行,例: grep -B 1
  • -A after, 同时显示后N行, 例:grep -A 1
    *-C center, 以查找到内容为中心,显示前后N行
  • -c count,统计出现次数,例:grep -c
  • -v 排除匹配关键字整行
  • -o obverse查看匹配(匹配过程)
  • -n 显示行号
  • -E 在关键字中使用正则匹配,使用egrep命令自动支持扩展正则

sed

强大的修改命令。常处理文本文件(小)、配置文件、日志文件。
格式:sed [参数[ [处理操作] [文件]
sed执行原理:
在这里插入图片描述
sed使用:

  • 使用sed进行替换:sed 's#被替换文本#替换文本#g' 此时sed在行中替换出现的关键字打印到屏幕,但是不修改文件,修改时需要加上-i参数
    • s :替换
    • g :global替换所有
  • 使用sed进行查找: sed '/关键字/p' 检索关键字并输出(p打印输出)

详细使用下图:
在这里插入图片描述

  • 使sed进行删除:sed [操作] [文件], 可以删除指定的行或者删除含有关键字的行

在这里插入图片描述
小技巧和示例:

  • 取出eth0网卡ip地址
    ip a s eth0|sed -n '3p'|sed -r 's#^.*inet (.*)/24.*#\1#g'
    ip a s eth0|sed -rn '3s#^.*inet (.*)/24.*#\1#gp'

  • 修改时进行备份
    sed -i.bak 's#aaa#AAA#g' ./aa.txt
    注意:n和i参数不要同时使用

  • 将当前目录下以test开头的.txt文件改为.jpg文件

    • ls test*.txt|sed -r 's#(.*)txt$#mv & \1jpg#g'|bash
    • rename命令的使用:rename [需要就修改信息] [修改成什么信息] [文件名称匹配]

常用参数:

  • -i 插入“替换”串
  • -r 匹配正则
  • -n 排除不匹配的内容
  • -e 写多个命令表达式,实现sad处理多要求, 例:sed -e '/abc/ibefore' -e '/abc/aafter'

操作控制参数:

  • p(print)输出信息
  • i(insert)插入信息,在指定信息前面插入信息
  • a(append)追加信息,在指定信息之后追加信息
  • d (delete) 删除行
  • '/^$/' 匹配空行
  • & 把管道(|)中的数据放到此处
  • s (substitute) 替换信息
  • g (global)全局操作

awk

具有统计分析文件、对文件中的列操作的功能。常用与文本操作、日志信息统计等。
使用格式:awk [参数[ [处理操作] [文件]

常用处理数据方式:
在这里插入图片描述
操作模式:
在操作处理中使用
在这里插入图片描述

本文结束。

# linux 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×