Shell工具(六)

294 阅读2分钟

一、Cut命令

cut就是负责切割文件中数据使用的。

1. 基本语法

 cut [-d '分隔符'] [-f 列号 提取第几列] filename

2. 案例说明

  • 获取ip地址
 ifconfig eth0 | grep "inet " | cut -d " " -f 10
 172.22.4.38
  • 对文件数据进行分隔

    • 新建文本文件
     hello stopping
     welcome to shell
    
    • 执行cut
     [root@izwz9eldxtlzr8ehu1fmjbz tools]# cut -d " " -f 1 cut.txt
     hello
     welcome
     [root@izwz9eldxtlzr8ehu1fmjbz tools]# cut -d " " -f 1,2 cut.txt
     hello stopping
     welcome to
     [root@izwz9eldxtlzr8ehu1fmjbz tools]# cut -d " " -f 1,2,3 cut.txt
     hello stopping
     welcome to shell
     [root@izwz9eldxtlzr8ehu1fmjbz tools]# cut -d " " -f 3 cut.txt
     ​
     shell
    

二、sed

sed是一种流编辑器,把当前处理行存储缓冲区中,称为“模式空间”。不会改变源文件的内容。

1. 语法

 sed [参数] 'command' filename
  • 参数

    • -e : 直接在指令列模式上进行sed的动作编辑。多个指令一起执行。
  • command

    • a

      • a前面指定行数,未指定则所有行下面都添加
      • 新增 a 后面可以新增字符串在下一行出现
    • d

      • 在d前添加数字表示删除行数
      • /hello/d 则表示删除包含hello的行
    • s : 查找并且替换

2. 案例说明

  • 添加hello
 [root@izwz9eldxtlzr8ehu1fmjbz tools]# sed "1a hello" cut.txt
 hello stopping
 hello
 welcome to shell
 [root@izwz9eldxtlzr8ehu1fmjbz tools]# sed "a hello" cut.txt
 hello stopping
 hello
 welcome to shell
 hello
  • 删除包含hello的行
 [root@izwz9eldxtlzr8ehu1fmjbz tools]# cat cut.txt
 hello stopping
 welcome to shell
 [root@izwz9eldxtlzr8ehu1fmjbz tools]# sed "/hello/d" cut.txt
 welcome to shell
  • 替换hello你好
 [root@izwz9eldxtlzr8ehu1fmjbz tools]# sed "s/hello/你好/g" cut.txt
 你好 stopping
 welcome to shell
  • 删除所有包含hello的行,并且将welcome替换成欢迎
[root@izwz9eldxtlzr8ehu1fmjbz tools]# cat cut.txt
hello stopping
welcome to shell
hello world
[root@izwz9eldxtlzr8ehu1fmjbz tools]# sed -e "/hello/d" -e "s/welcome/欢迎/g" cut.txt
欢迎 to shell

三、awk

四、sort

sort是用于排序并将结果标准输出

1. 基本语法

sort (选项)(参数)
  • 选项

    • -n :依照数值大小排序
    • -r :以相反的顺序排序
    • -t :设置排序时所用的分隔字符
    • -k :指定需要排序的列

2. 案例说明

新增文本sort.txt,并且按第二列排序。

xiaoming:2:100
laowang:4:84
xiaodong:3:12
//升序
[root@izwz9eldxtlzr8ehu1fmjbz tools]# sort -t : -nk 2 sort.txt
xiaoming:2:100
xiaodong:3:12
laowang:4:84
//降序
[root@izwz9eldxtlzr8ehu1fmjbz tools]# sort -t : -nrk 2 sort.txt
laowang:4:84
xiaodong:3:12
xiaoming:2:100

\