什么是Linux 管道命令?
1、Linux管道命令是 “ | ”,其作用是用来连接多条指令,前一条指令的输出流会作为后一条指令的操作对象,其命令格式为“指令1 | 指令2 | …”,该命令的后一条指令,必须能够接收标准输入流命令才能执行。
2、管道命令的操作符是:”|”,它只能处理由前面一条指令传出的正确输出信息,对错误信息是没有直接处理能力的。然后,传递给下一条指令,作为操作对象。
基本格式:指令1 | 指令2 | …
【提醒注意】:
1、管道命令只能处理前一条指令的正确输出,不能处理错误输出;
2、管道命令的后一条指令,必须能够接收标准输入流命令才能执行
🐋 split :通过 split 命令将大文件 切分成 若干小文件
1、实现
第一步 : 按 字节 将 大文件 切分成 若干小文件
第二步 : 按 行数 将 大文件 切分成 若干小文件
第一步: 按 字节 将 大文件 切分成 若干小文件
命令
英文
含义
split -b 10k 文件
byte
将大文件切分成若干 10KB 的小文件
第二步: 按 行数 将 大文件 切分成 若干小文件
🐋 awk:通过 awk 实现 模糊查询, 按需提取字段, 还可以进行 判断 和 简单的运算等.
1、实现
第一步 : 模糊查询
第二步 : 指定分割符 , 根据下标显示内容
第三步 : 指定输出字段的分割符
第四步 : 调用 awk 提供的函数
第五步 : 通过 if 语句判断 $4 是否及格
第六步 : 段内容 求和
注:测试文件内容 score.txt 请在管道命令(一)中进行查找
Linux 管道命令Cut、sort、wc、uniq、tee、tr【一】
第一步: 搜索 zhangsan 和 lisi 的成绩
命令
含义
awk '/zh|li/' score.txt
模糊查询
第二步: 指定分割符, 根据下标显示内容
选项:
选项
英文
含义
- F ','
fifield-separator
使用 指定字符 分割
$ + 数字
获取 第几段 内容
$0
获取 当前行 内容
NF
fifield
表示当前行共有多少个字段
$NF
代表 最后一个字段
$(NF - 1)
代表 倒数第二个字段
NR
代表 处理的是第几行
第三步: 指定分割符, 根据下标显示内容
选项:
第四步: 调用 awk 提供的函数
常用函数如下 :
函数名
含义
作用
toupper()
upper
字符 转成 大写
tolower()
lower
字符 转成小写
length()
length
返回 字符长度
第五步: if语句 查询及格的学生信息
选项:
第六步: 段内容 求学科平均分
通过 awk 动作 文件名 更加灵活的解析文件。
🐋sed:通过 sed 可以实现 过滤 和 替换 的功能.
1、实现
第一步 : 实现 查询 功能
第二步 : 实现 删除 功能
第三步 : 实现 修改 功能
第四步 : 实现 替换 功能
第一步: 实现 查询 功能
可选参数 :
# 练习 1 : 列出 1.txt 的 1~3 行 的数据
sed -n -e '1,3p' 1.txt
# 练习 2 : 列出 1.txt 的所有数据
sed -n -e '1,$p' 1.txt
# 练习 3 : 列出 1.txt 的所有数据 且 显示行号
sed -n -e '1,$=' -e '1,$p' 1.txt
简化版
cat -n 1.txt
cat -b 1.txt
nl 1.txt
# 练习 4: 查找 1.txt 中包含 eee 行
sed -n -e '/eee/p' 1.txt
# 练习 5 : 列出 01.txt 中包含 eee 的内容, eee 不区分大小写 , 并显示行号
nl 1.txt | sed -n -e '/eee/Ip'
nl 1.txt | grep -i eee
cat -n 1.txt | grep -i eee
第二步: 实现 删除 功能
# 练习 1 : 删除 1.txt 中前 3 行数据,并显示行号
nl 1.txt | sed -e '1,3d'
# 练习 2 : 保留 1.txt 中前 4 行数据,并显示行号
nl 1.txt | sed -e '5,$d'
nl 1.txt | sed -n -e '1,4p'
第三步: 实现 修改 功能
# 练习 1: 在 1.txt 的第二行后添加 aaaaa, 并显示行号
nl 1.txt | sed -e '2a aaaaa'
# 练习 2 : 在 1.txt 的第 1 行前添加 bbbbb ,并显示行号
nl 1.txt | sed -e '1i bbbbb'
第四步: 实现 替换 功能
# 练习 1: 把 1.txt 中的 kkk 替换成为 mmm, 并显示行号
nl 1.txt | sed -e 's/kkk/mmm/'
# 练习 2: 把 1.txt 中的 1,2 行替换为 aaa, 并显示行号
nl 1.txt | sed -e '1,2c aaa
写到最后