欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

linux命令 (管道命令)

程序员文章站 2024-01-16 11:44:22
...

管道命令

  • cut
  • sort
  • wc
  • uniq
  • tree
  • tr
  • split
  • awk
  • sed
  • grep

1.cut

1.1目标

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

1.2实现

第一步: 截取出1.txt文件中前2行的第5个字符
linux命令 (管道命令)
head -2 1.txt | cut -c 5

第二步: 截取出1.txt文件中前2行以”:”进行分割的第1,2段内容
linux命令 (管道命令)

范围控制
linux命令 (管道命令)
方式一:head -2 1.txt | cut -d ‘:’ -f 1,2
方式二:head -2 1.txt | cut -d ‘:’ -f 1-2

小结

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

2.sort

2.1目标

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

2.2路径

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

2.3实现

第一步: 对字符串排序
linux命令 (管道命令)
第二步: 去重排序
linux命令 (管道命令)
linux命令 (管道命令)

第三步: 对数值排序
linux命令 (管道命令)
默认按照首个字母排序
linux命令 (管道命令)

  • 升序
    linux命令 (管道命令)

  • 倒序
    linux命令 (管道命令)

  • 合并式
    linux命令 (管道命令)
    第四步:对成绩排序
    linux命令 (管道命令)

根据第二段成绩 进行倒序显示 所有内容

sort -t ‘,’ -k2nr score.txt

3.wc命令

3.1目标

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

3.2路径

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

    3.3实现

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

    3.4小结

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

4.uniq

4.1 目标

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

4.2路径

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

4.3实现

第一步:实现去重效果
linux命令 (管道命令)
linux命令 (管道命令)
第二步:不但去重,还要 统计出现的次数
linux命令 (管道命令)
linux命令 (管道命令)

4.4小结

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

5.tee

5.1目标

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

5.2目标

linux命令 (管道命令)
将去重统计的结果 放到 a.txt、b.txt、c.txt 文件中
linux命令 (管道命令)

5.3小结

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

6.tr

6.1目标

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

6.2 路径

6.2 路径

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

6.3

第一步: 实现 替换效果

linux命令 (管道命令)
将 小写i 替换成 大写 I
#把itheima的转换为大写
把 HELLO 转成 小写
linux命令 (管道命令)
第二步: 实现删除效果
linux命令 (管道命令)
需求: 删除abc1d4e5f中的数字
linux命令 (管道命令)
第三步: 单词计数
linux命令 (管道命令)

7 split

7.1目标

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

7.2路径

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

7.3 实现

第一步: 按 字节 将 大文件 切分成 若干小文件
linux命令 (管道命令)
第二步: 按 行数 将 大文件 切分成 若干小文件
linux命令 (管道命令)

7.4 小结

通过 split 选项 文件名 命令将大文件 切分成 若干小文件

8 awk

8.1 目标

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

8.2 步骤

  • 第一步: 模糊查询
  • 第二步: 指定分割符, 根据下标显示内容
  • 第三步: 指定输出字段的分割符
  • 第四步: 调用 awk 提供的函数
  • 第五步: 通过if语句判断$4是否及格
  • 第六步: 段内容 求和
    #### 8.3实现
    第一步: 搜索 zhangsan 和 lisi 的成绩

    linux命令 (管道命令)
    第二步: 指定分割符, 根据下标显示内容
    linux命令 (管道命令)
    选项
    linux命令 (管道命令)

第三步: 指定分割符, 根据下标显示内容
linux命令 (管道命令)
选项
linux命令 (管道命令)
第四步: 调用 awk 提供的函数
linux命令 (管道命令)
常用函数如下:
linux命令 (管道命令)
第五步: if语句 查询及格的学生信息
linux命令 (管道命令)
选项
linux命令 (管道命令)

第六步: 段内容 求学科平均分
linux命令 (管道命令)
linux命令 (管道命令)

9.sed

9.1目标

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

9.2目标

9.2 路径

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

9.3目标

第一步: 实现 查询 功能
linux命令 (管道命令)
选项
linux命令 (管道命令)

  • 练习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/'