linux基础-3

| 管道相关命令

目标

  • cut
  • sort
  • wc
  • uniq
  • tee
  • tr
  • split
  • awk
  • sed
  • grep
  • 准备数据

    zhangsan 68 99 26
    lisi 98 66 96
    wangwu 38 33 86
    zhaoliu 78 44 36
    maq 88 22 66
    zhouba 98 44 46
    
  • 以上是成绩表信息

  • 使用 逗号 分割, 第一列 是 姓名, 第二列是 语文成绩, 第三列是 数学成绩, 第四列是 英语成绩

  • 需求1: 按照 数学成绩排名, 取出前三名

  • 需求2: 显示 学生的数学成绩

  • 需求3: 显示 数学平均分

  • 需求4: 如何将大文件 切割成 若干小文件

  • 准备工作

    cd /export/ && rm -rf *
    vim 1.txt     
    
    111:aaa:bbb:ccc
    222:ddd:eee:fff
    333:ggg:hhh
    444:iii
    

1 cut

1.1 目标

  • cut 根据条件 从命令结果中 提取 对应内容

1.2 路径

  • 第一步: 截取出1.txt文件中前2行的第5个字符
  • 第二步: 截取出1.txt文件中前2行以”:”进行分割的第1,2,3段内容(方式二)

1.3 实现

第一步: 截取出1.txt文件中前2行的第5个字符

命令 含义
cut 动作 文件 从指定文件 截取内容
  • 参数
参数 英文 含义
-c characters 按字符选取内容

答案:

head -2 1.txt | cut -c 5
[root@node01 export]# cut -c 5 1.txt 
a
d
g
i

[root@node01 export]# cat 1.txt 
111:aaa:bbb:ccc
222:ddd:eee:fff
333:ggg:hhh
444:iii

[root@node01 export]# cat 1.txt | cut -c 5
a
d
g
i

[root@node01 export]# head -2 1.txt 
111:aaa:bbb:ccc
222:ddd:eee:fff

[root@node01 export]# head -2 1.txt | cut -c 5
a
d

第二步: 截取出1.txt文件中前2行以”:”进行分割的第1,2,3段内容

参数 英文 含义
-d '分隔符' delimiter 指定分隔符
-f n1,n2 fields 分割以后显示第几段内容, 使用 , 分割

范围控制

范围 含义
n 只显示第n项
n- 显示 从第n项 一直到行尾
n-m 显示 从第n项 到 第m项(包括m)

答案:

head -2 1.txt | cut -d ':' -f 1,2,3

或者

head -2 1.txt | cut -d ':' -f 1-3

1.3 小结

  • 通过 cut 动作 目标文件 可以根据条件 提取对应内容

2 sort 的 工作原理

2.1 目标

  • sort可针对文本文件的内容,以行为单位来排序。

2.2 路径

  • 第一步: 对字符串排序
  • 第二步: 去重排序
  • 第三步: 对数值排序
  • 第四步: 对成绩排序

2.3 实现

第一步: 对字符串排序

  • 准备工作
cd /export
vim 2.txt

banana
apple
pear
orange
pear
[root@node01 export]# cat 2.txt 
banana
apple
pear
orange
pear
[root@node01 export]# sort 2.txt 
apple
banana
orange
pear
pear
[root@node01 export]# cat 2.txt | sort
apple
banana
orange
pear
pear

第二步: 去重排序

参数 英文 含义
-u unique 去掉重复的

它的作用很简单,就是在输出行中去除重复行。

[root@node01 export]# cat 2.txt 
banana
apple
pear
orange
pear
[root@node01 export]# sort 2.txt 
apple
banana
orange
pear
pear
You have new mail in /var/spool/mail/root
[root@node01 export]# sort -u 2.txt 
apple
banana
orange
pear
[root@node01 export]# cat 2.txt | sort -u
apple
banana
orange
pear

第三步: 对数值排序

参数 英文 含义
-n numeric-sort 按照数值大小排序
-r reverse 使次序颠倒
  • 准备数据

    cd /export/
    vim 3.txt
    
    1
    3
    5
    7
    11
    2
    4
    6
    10
    8
    9
    
  • 默认按照字符串排序

    [root@node01 export]# sort 3.txt 
    1
    10
    11
    2
    3
    4
    5
    6
    7
    8
    9
    [root@node01 export]# cat 3.txt | sort
    1
    10
    11
    2
    3
    4
    5
    6
    7
    8
    9
    
  • 升序

    [root@node01 export]# sort -n 3.txt 
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [root@node01 export]# cat 3.txt | sort -n
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
  • 倒序

    [root@node01 export]# cat 3.txt | sort -n -r
    11
    10
    9
    8
    7
    6
    5
    4
    3
    2
    1
    
  • 合并式

    [root@node01 export]# cat 3.txt | sort -nr
    11
    10
    9
    8
    7
    6
    5
    4
    3
    2
    1
    

第四步: 对成绩排序

参数 英文 含义
-t field-separator 指定字段分隔符
-k key 根据那一列排序
  • 准备工作

    cd /export
    vim 4.txt
    
    zhangsan 68 99 26
    lisi 98 66 96
    wangwu 38 33 86
    zhaoliu 78 44 36
    maqi 88 22 66
    zhouba 98 44 46
    
  • 练习: 根据第二段成绩 进行倒序显示 所有内容

    [root@node01 export]# cat 4.txt 
    zhangsan 68 99 26
    lisi 98 66 96
    wangwu 38 33 86
    zhaoliu 78 44 36
    maqi 88 22 66
    zhouba 98 44 46
    [root@node01 export]# cat 4.txt | sort -t ' ' -k 2
    wangwu 38 33 86
    zhangsan 68 99 26
    zhaoliu 78 44 36
    maqi 88 22 66
    zhouba 98 44 46
    lisi 98 66 96
    [root@node01 export]# cat 4.txt | sort -t ' ' -k 2 -n -r
    zhouba 98 44 46
    lisi 98 66 96
    maqi 88 22 66
    zhaoliu 78 44 36
    zhangsan 68 99 26
    wangwu 38 33 86
    

2.4 小结

  • 通过 sort 选项 文件 可以对文件内容进行排序

3 wc命令

3.1 目标

  • 显示指定文件 字节数, 单词数, 行数 信息.

3.2 路径

  • 第一步: 显示指定文件 字节数, 单词数, 行数 信息.
  • 第二步: 只显示 文件 的行数
  • 第三步: 统计多个文件的 行数 单词数 字节数
  • 第四步: 查看 /etc 目录下 有多少个 子内容

3.3 实现

第一步: 显示指定文件 字节数, 单词数, 行数 信息.

命令 含义
wc 文件名 显示指定文件 字节数, 单词数, 行数 信息
  • 准备工作

    cd /export/
    vim 5.txt
    
    111
    222 bbb
    333 aaa bbb 
    444 aaa bbb ccc
    555 aaa bbb ccc ddd
    666 aaa bbb ccc ddd eee
    
  • 练习: 显示指定文件 字节数, 单词数, 行数 信息.

[root@node01 export]# wc 5.txt 
 6 21 85 5.txt
[root@node01 export]# cat 5.txt 
111
222 bbb
333 aaa bbb 
444 aaa bbb ccc
555 aaa bbb ccc ddd
666 aaa bbb ccc ddd eee
[root@node01 export]# cat 5.txt | wc
      6      21      85

第二步: 只显示 文件 的行数

参数 英文 含义
-c bytes 字节数
-w words 单词数
-l lines 行数
[root@node01 export]# cat 5.txt 
111
222 bbb
333 aaa bbb 
444 aaa bbb ccc
555 aaa bbb ccc ddd
666 aaa bbb ccc ddd eee
You have new mail in /var/spool/mail/root
[root@node01 export]# cat 5.txt | wc
      6      21      85
[root@node01 export]# cat 5.txt | wc -l
6

第三步: 统计多个文件的 行数 单词数 字节数

[root@node01 export]# wc 2.txt 3.txt 4.txt 5.txt 
  5   5  30 2.txt
 11  11  24 3.txt
  6  24  94 4.txt
  6  21  85 5.txt
 28  61 233 total
[root@node01 export]# wc *.txt
  5   5  30 2.txt
 11  11  24 3.txt
  6  24  94 4.txt
  6  21  85 5.txt
 28  61 233 total

第四步: 查看 /etc 目录下 有多少个 子内容

ll /etc | wc -l

3.4 小结

  • 通过 wc 文件 就可以 统计 文件的 字节数、单词数、行数.

4 uniq

uniq 命令用于检查及删除文本文件中重复出现的行,一般与 sort 命令结合使用。

4.1 目标

  • uniq 命令用于检查及删除文本文件中重复出现的行,一般与 sort 命令结合使用。

4.2路径

  • 第一步:实现去重效果
  • 第二步:不但去重,还要 统计出现的次数

4.3 实现

第一步:实现去重效果

命令 英文 含义
uniq [参数] 文件 unique 唯一 去除重复行
  • 准备工作

    cd /export/
    vim 6.txt
    
    张三    98
    李四    100
    王五    90
    赵六    95
    麻七    70
    李四    100
    王五    90
    赵六    95
    麻七    70
    
  • 需求: 实现去重效果

  • [root@node01 export]# cat 6.txt 
    张三    98
    李四    100
    王五    90
    赵六    95
    麻七    70
    李四    100
    王五    90
    赵六    95
    麻七    70
    [root@node01 export]# cat 6.txt | sort
    张三    98
    李四    100
    李四    100
    王五    90
    王五    90
    赵六    95
    赵六    95
    麻七    70
    麻七    70
    [root@node01 export]# cat 6.txt | sort | uniq
    张三    98
    李四    100
    王五    90
    赵六    95
    麻七    70
    

第二步:不但去重,还要 统计出现的次数

参数 英文 含义
-c count 统计每行内容出现的次数
[root@node01 export]# cat 6.txt | sort | uniq -c
      1 张三    98
      2 李四    100
      2 王五    90
      2 赵六    95
      2 麻七    70

4.4 小结

  • 通过 uniq [选项] 文件 就可以完成 去重行 和 统计次数

5 tee

5.1 目标

  • 通过 tee 可以将命令结果 通过管道 输出到 多个文件

5.2 实现

命令 含义
命令结果 | tee 文件1 文件2 文件3 通过 tee 可以将命令结果 通过管道 输出到 多个文件
  • 将去重统计的结果 放到 a.txt、b.txt、c.txt 文件中

    [root@node01 export]# ls
    2.txt  3.txt  4.txt  5.txt  6.txt
    [root@node01 export]# cat 6.txt | sort | uniq -c | tee a.txt b.txt c.txt
          1 张三    98
          2 李四    100
          2 王五    90
          2 赵六    95
          2 麻七    70
    [root@node01 export]# ls
    2.txt  3.txt  4.txt  5.txt  6.txt  a.txt  b.txt  c.txt
    [root@node01 export]# cat a.txt 
          1 张三    98
          2 李四    100
          2 王五    90
          2 赵六    95
          2 麻七    70
    

5.3 小结

  • 通过 tee 可以将命令结果 通过管道 输出到 多个文件

6 tr

6.1 目标

  • 通过 tr 命令用于 替换删除 文件中的字符。

6.2 路径

  • 第一步: 实现 替换 效果
  • 第二步: 实现 删除 效果
  • 第三步: 完成 单词计数 案例

6.3 实现

第一步: 实现 替换效果

命令 英文 含义
命令结果 | tr 被替换的字符 新字符 translate 实现 替换效果
  • 准备工作

    cd /export
    vim 7.txt
    
    itheima
    HELLO
    abc1d4e5f
    
  • 需求:

    # 将 小写i 替换成  大写 I
    # 把 小写 的转换为大写
    # 把 大写 转成 小写
    
[root@node01 export]# cat 7.txt 
itheima
HELLO
abc1d4e5f
[root@node01 export]# cat 7.txt | tr 'i' 'I'
ItheIma
HELLO
abc1d4e5f
[root@node01 export]# cat 7.txt | tr [a-z] [A-Z]
ITHEIMA
HELLO
ABC1D4E5F
You have new mail in /var/spool/mail/root
[root@node01 export]# cat 7.txt | tr [A-Z] [a-z]
itheima
hello
abc1d4e5f

第二步: 实现删除效果

命令 英文 含义
命令结果 | tr -d 被删除的字符 delete 删除指定的字符
  • 需求: 删除abc1d4e5f中的数字
echo 'abc1d4e5f' | tr -d [0-9]

第三步: 单词计数

  • 准备工作

    cd /export
    vim 8.txt
    
    hello,world,hadoop
    hive,sqoop,flume,hello
    kitty,tom,jerry,world
    hadoop
    

    分析:

    1 将, 换成 换行
    
    2 排序
    
    3 去重
    
    4 计数
    
    -------- 查看文件内容
    [root@node01 export]# cat 8.txt  
    hello,world,hadoop
    hive,sqoop,flume,hello
    kitty,tom,jerry,world
    hadoop
    
    -------- 将 逗号, 替换成 换行符
    [root@node01 export]# cat 8.txt | tr ',' '\n'
    hello
    world
    hadoop
    hive
    sqoop
    flume
    hello
    kitty
    tom
    jerry
    world
    hadoop
    
    -------- 排序
    [root@node01 export]# cat 8.txt | tr ',' '\n' | sort
    flume
    hadoop
    hadoop
    hello
    hello
    hive
    jerry
    kitty
    sqoop
    tom
    world
    world
    
    -------- 去重
    [root@node01 export]# cat 8.txt | tr ',' '\n' | sort | uniq
    flume
    hadoop
    hello
    hive
    jerry
    kitty
    sqoop
    tom
    world
    
    -------- 计数
    [root@node01 export]# cat 8.txt | tr ',' '\n' | sort | uniq -c
          1 flume
          2 hadoop
          2 hello
          1 hive
          1 jerry
          1 kitty
          1 sqoop
          1 tom
          2 world
    [root@node01 export]# 
    

6.4 小结

  • 通过 tr [选项] 字符1 字符2 可以 实现 替换删除 效果

  • 准备工作

    # 清空目录内容
    cd /export/ && rm -rf *
    
    # 查看 /etc目录下 以.conf以结尾的文件的内容
    cat -n /etc/*.conf
    
    # 将命令结果 追加到 /export/v.txt 文件中
    cat -n /etc/*.conf >> /export/v.txt
    
    # 查看文件内容
    ls
    
    # 查看新文件的行数
    wc -l v.txt 
    

7 split

7.1 目标

  • 通过 split 命令将大文件 切分成 若干小文件

7.2 路径

  • 第一步: 按 字节 将 大文件 切分成 若干小文件
  • 第二步: 按 行数 将 大文件 切分成 若干小文件

7.3 实现

第一步: 按 字节 将 大文件 切分成 若干小文件

命令 英文 含义
split -b 10k 文件 byte 将大文件切分成若干10KB的小文件
[root@node01 export]# ll -h
total 108K
-rw-r--r-- 1 root root 105K Jul 12 20:35 v.txt
[root@node01 export]# split -b 20k v.txt 
[root@node01 export]# ll
total 216
-rw-r--r-- 1 root root
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值