linux管道相关命令

linux管道相关命令管道相关命令 目标 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 以上是成绩表信息 使用 逗号 分割 第一列 是 姓名

大家好,我是讯享网,很高兴认识大家。

管道相关命令

目标

  • 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 

    讯享网
  • 以上是成绩表信息
  • 使用 逗号 分割, 第一列 是 姓名, 第二列是 语文成绩, 第三列是 数学成绩, 第四列是 英语成绩

准备工作

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个字符

命令 含义
cut 动作 文件 从指定文件 截取内容
  • 参数
参数 英文 含义
-c characters 按字符选取内容
head -2 1.txt | cut -c 5 

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

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

范围控制

范围 含义
n 只显示第n项
n- 显示 从第n项 一直到行尾
n-m 显示 从第n项 到 第m项(包括m)
讯享网head -2 1.txt | cut -d ':' -f 1,2 
head -2 1.txt | cut -d ':' -f 1-2 

1.3 小结

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

    vim score.txt

    讯享网zhangsan 68 99 26 lisi 98 66 96 wangwu 38 33 86 zhaoliu 78 44 36 maq 88 22 66 zhouba 98 44 46 

2 sort

2.1 目标

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

2.2 路径

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

2.3 实现

第一步: 对字符串排序

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

第二步: 去重排序

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

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

讯享网[root@node01 tmp]# sort -u 2.txt apple banana orange pear 

第三步: 对数值排序

参数 英文 含义
-n numeric-sort 按照数值大小排序
-r reverse 使次序颠倒
  • 准备数据
    [root@node01 tmp]# cat 3.txt 1 3 5 7 11 2 4 6 10 8 9 
  • 默认按照字符串排序
    讯享网[root@node01 tmp]# sort 2.txt 1 10 11 2 3 4 5 6 7 8 9 
  • 升序
    [root@node01 tmp]# sort -n 2.txt 1 2 3 4 5 6 7 8 9 10 11 
  • 倒序
    讯享网[root@node01 tmp]# sort -n -r 2.txt 11 10 9 8 7 6 5 4 3 2 1 
  • 合并式
    [root@node01 tmp]# sort -nr 2.txt 11 10 9 8 7 6 5 4 3 2 1 

第四步: 对成绩排序

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

‘’

讯享网# 根据第二段成绩 进行倒序显示 所有内容 sort -t ',' -k2nr score.txt 

3 wc命令

3.1 目标

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

3.2 路径

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

3.3 实现

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

命令 含义
wc 文件名 显示指定文件 字节数, 单词数, 行数 信息
[root@hadoop01 export]# cat 4.txt 111 222 bbb 333 aaa bbb 444 aaa bbb ccc 555 aaa bbb ccc ddd 666 aaa bbb ccc ddd eee [root@hadoop01 export]# wc 4.txt 6 21 85 4.txt 

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

参数 英文 含义
-c bytes 字节数
-w words 单词数
-l lines 行数
讯享网[root@hadoop01 export]# wc 4.txt 6 21 85 3.txt 

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

[root@hadoop01 export]# wc 1.txt 2.txt 3.txt 4 4 52 1.txt 11 11 24 2.txt 6 21 85 3.txt 21 36 161 总用量 [root@hadoop01 export]# wc *.txt 4 4 52 1.txt 11 11 24 2.txt 6 21 85 3.txt 6 6 95 score.txt 27 42 256 总用量 

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

讯享网[root@hadoop01 export]# ls /etc | wc -w 240 

3.4 小结

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

4 uniq

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

4.1 目标

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

4.2路径

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

4.3 实现

第一步:实现去重效果

命令 英文 含义
uniq [参数] 文件 unique 唯一 去除重复行
# 准备内容 [root@hadoop01 export]# cat 5.txt 张三    98 李四    100 王五    90 赵六    95 麻七    70 李四    100 王五    90 赵六    95 麻七    70 # 排序 [root@hadoop01 export]# cat 5.txt | sort 李四    100 李四    100 麻七    70 麻七    70 王五    90 王五    90 张三    98 赵六    95 赵六    95 # 去重 [root@hadoop01 export]# cat 5.txt | sort | uniq 李四    100 麻七    70 王五    90 张三    98 赵六    95 

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

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

4.4 小结

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

5 tee

5.1 目标

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

5.2 实现

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

    cat 5.txt | sort | uniq -c | tee a.txt b.txt c.txt 

5.3 小结

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

6 tr

6.1 目标

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

6.2 路径

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

6.3 实现

第一步: 实现 替换效果

命令 英文 含义
命令结果 | tr 被替换的字符 新字符 translate 实现 替换效果
讯享网# 将 小写i 替换成 大写 I # 把itheima的转换为大写 # 把 HELLO 转成 小写 
# 将 小写i 替换成 大写 I echo "itheima" | tr 'i' 'I' # 把itheima的转换为大写 echo "itheima" |tr '[a-z]' '[A-Z]' # 把 HELLO 转成 小写 echo "HELLO" |tr '[A-Z]' '[a-z]' 

第二步: 实现删除效果

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

第三步: 单词计数

准备工作
[root@hadoop01 export]# cat words.txt hello,world,hadoop hive,sqoop,flume,hello kitty,tom,jerry,world hadoop 

1 将, 换成 换行

2 排序

3 去重

4 计数

讯享网# 统计每个单词出现的次数 [root@hadoop01 export]# cat words.txt | tr ',' '\n' | sort | uniq -c 1 flume 2 hadoop 2 hello 1 hive 1 jerry 1 kitty 1 sqoop 1 tom 2 world 
  • 准备工作
    # 查看 /etc目录下 以.conf以结尾的文件的内容 cat -n /etc/*.conf # 将命令结果 追加到 /export/v.txt 文件中 cat -n /etc/*.conf >> /export/v.txt 

7 split

7.1 目标

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

7.2 路径

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

7.3 实现

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

命令 英文 含义
split -b 10k 文件 byte 将大文件切分成若干10KB的小文件

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

命令 英文 含义
split -l 1000 文件 lines 将大文件切分成若干1000行 的小文件

7.4 小结

  • 通过 split 选项 文件名 命令将大文件 切分成 若干小文件
  • 准备工作1:

    vim score.txt

    讯享网zhangsan 68 99 26 lisi 98 66 96 wangwu 38 33 86 zhaoliu 78 44 36 maq 88 22 66 zhouba 98 44 46 

8 awk

8.1 目标

  • 通过 awk 实现 模糊查询, 按需提取字段, 还可以进行 判断 和 简单的运算等.

8.2 步骤

  • 第一步: 模糊查询
  • 第二步: 指定分割符, 根据下标显示内容
  • 第三步: 指定输出字段的分割符
  • 第四步: 调用 awk 提供的函数


    讯享网

  • 第五步: 通过if语句判断$4是否及格
  • 第六步: 段内容 求和

8.3 实现

第一步: 搜索 zhangsan 和 lisi 的成绩

命令 含义
awk ‘/zhangsan|lisi/’ score.txt 模糊查询

第二步: 指定分割符, 根据下标显示内容

命令 含义
awk -F ‘,’ ‘{print $1, $2, $3}’ 1.txt 操作1.txt文件, 根据 逗号 分割, 打印 第一段 第二段 第三段 内容

选项

选项 英文 含义
-F ',' field-separator 使用 指定字符 分割
$ + 数字 获取第几段内容
$0 获取 当前行 内容
NF field 表示当前行共有多少个字段
$NF 代表 最后一个字段
$(NF-1) 代表 倒数第二个字段
NR 代表 处理的是第几行

第三步: 指定分割符, 根据下标显示内容

命令 含义
awk -F ’ ’ ‘{OFS="==="}{print $1, $2, $3}’ 1.txt 操作1.txt文件, 根据 逗号 分割, 打印 第一段 第二段 第三段 内容

选项

选项 英文 含义
OFS="字符" output field separator 向外输出时的段分割字符串

第四步: 调用 awk 提供的函数

命令 含义
awk -F ‘,’ ‘{print toupper($2)}’ 1.txt 操作1.txt文件, 根据 逗号 分割, 打印 第一段 第二段 第三段 内容

常用函数如下:

函数名 含义 作用
toupper() upper 字符 转成 大写
tolower() lower 字符 转成小写
length() length 返回 字符长度

第五步: if语句 查询及格的学生信息

命令 含义
awk -F ‘,’ ‘{if($4>60) print $1, $4 }’ score.txt 如果及格,就显示 $1, $4
awk -F ‘,’ ‘{if($4>60) print $1, $4, “及格”; else print $1, $4, “不及格”}’ score.txt 显示 姓名, $4, 是否及格

选项

参数 含义
if($0 ~ “aa”) print $0 如果这一行包含 “aa”, 就打印这一行内容
if($1 ~ “aa”) print $0 如果第一段 包含 “aa”, 就打印这一行内容
if($1 == “lisi”) print $0 如果第一段 等于 “lisi”, 就打印这一行内容

第六步: 段内容 求学科平均分

命令 含义
awk ‘BEGIN{初始化操作}{每行都执行} END{结束时操作}’ 文件名 BEGIN{ 这里面放的是执行前的语句 }
{这里面放的是处理每一行时要执行的语句}
END {这里面放的是处理完所有的行后要执行的语句 }
awk -F ',' 'BEGIN{}{total=total+$4}END{print total, NR, (total/NR)}' score.txt 
  • 准备工作

    vim 1.txt

    讯享网aaa java root bbb hello ccc rt ddd root nologin eee rtt fff ROOT nologin ggg rttt 

9 sed

9.1 目标

  • 通过 sed 可以实现 过滤替换 的功能.

9.2 路径

  • 第一步: 实现 查询 功能
  • 第二步: 实现 删除 功能
  • 第三步: 实现 修改 功能
  • 第四步: 实现 替换 功能
  • 第五步: 对 原文件 进行操作
  • 第六步: 综合 练习

9.3 实现

第一步: 实现 查询 功能

命令 含义
sed 可选项 目标文件 对目标文件 进行 过滤查询替换

可选参数

可选项 英文 含义
p print 打印
$ 代表 最后一行
-n 仅显示处理后的结果
-e expression 根据表达式 进行处理
  • 练习1 列出 1.txt的 1~5行 的数据
sed -n -e '1,5p' 1.txt 
  • 练习2 列出01.txt的所有数据
讯享网sed -n -e '1,$p' 1.txt 
  • 练习3 列出01.txt的所有数据 且 显示行号
可选项 含义
= 打印当前行号
sed -n -e '1,$=' -e '1,$p' 1.txt 简化版 cat -n 1.txt cat -b 1.txt nl 1.txt 
  • 练习4: 查找01.txt中包含root行

答案:

讯享网sed -n -e '/root/p' 1.txt 
  • 练习5 列出01.txt中包含root的内容,root不区分大小写,并显示行号

可选项 英文 含义
I ignore 忽略大小写

答案:

nl 1.txt | sed -n -e '/root/Ip' nl 01.txt | grep -i root cat -n 01.txt | grep -i root 
  • 练习6 查找出1.txt中 字母r后面是多个t的行,并显示行号
可选项 英文 含义
-r regexp-extended 识别正则

答案:

讯享网nl 01.txt | sed -nr -e '/r+t/p' 

或者

sed -nr -e '/r+t/p' -e '/r+t/=' 01.txt 

第二步: 实现 删除 功能

  • 练习1 删除01.txt中前3行数据,并显示行号
可选项 英文 含义
d delete 删除指定内容

答案:

讯享网nl 01.txt | sed -e '1,3d' 
  • 练习2 保留1.txt中前4行数据,并显示行号

答案:

nl 01.txt | sed -e '5,$d' nl 1.txt | sed -n -e '1,4p' 

第三步: 实现 修改 功能

  • 练习1: 在01.txt的第二行后添加aaaaa,并显示行号
参数 英文 含义
i insert 目标前面 插入内容
a append 目标后面 追加内容

答案:

讯享网nl 01.txt | sed -e '2a aaaaa' 
  • 练习2  在1.txt的第1行前添加bbbbb,并显示行号

答案:

nl 01.txt | sed -e '1i bbbbb' 

第四步: 实现 替换 功能

  • 练习1  把1.txt中的nologin替换成为huawei,并显示行号
英文 含义
s/oldString/newString/ replace 替换

答案:

讯享网nl 1.txt | sed -e 's/nologin/huawei/' 
  • 练习2  把01.txt中的1,2行替换为aaa,并显示行号
选项 英文
2c 新字符串 replace 使用新字符串 替换 选中的行

答案:

nl passwd | sed -e '1,2c aaa' 

第五步: 对 原文件 进行操作

  • 练习1  在01.txt中把nologin替换为 huawei
参数 英文 含义
-i in-place 替换原有文件内容

答案:

讯享网sed -i -e 's/nologin/huawei/' 01.txt 
  • 练习2  在01.txt文件中第2、3行替换为aaaaaa

答案:

sed -i -e '2,3c aaa' 01.txt 

注意:在进行操作之前,最好是对数据进行备份,放置操作失误,数据无法恢复!

  • 练习3 删除01.txt中前2行数据,并且删除原文件中的数据

答案:

讯享网sed -i -e '1,2d' 01.txt nl passwd 查看数据 

第六步: 综合 练习

  • 练习1 获取ip地址

答案:

ifconfig eth0 | grep "inet addr" | sed -e 's/^.*inet addr://' | sed -e 's/Bcast:.*$//' 
  • 练习2 从1.txt中提出数据,匹配出包含root的内容,再把nologin替换为itheima

答案:

讯享网nl 01.txt | grep 'root' | sed -e 's/nologin/itheima/' 或者 nl 01.txt | sed -n -e '/root/p' | sed -e 's/nologin/itheima/' 或者 nl 01.txt | sed -n -e '/root/{s/nologin/itheima/p}' #只显示替换内容的行 
  • 练习3  从1.txt中提出数据,删除前2行,并把nologin替换为itheima,并显示行号

答案:

nl 01.txt | sed -e '1,2d' | sed -e 's/nologin/itheima/' 
小讯
上一篇 2025-03-10 13:16
下一篇 2025-02-14 23:50

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/60378.html