前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux基础Day03

Linux基础Day03

作者头像
Maynor
发布2021-04-09 11:37:12
5420
发布2021-04-09 11:37:12
举报

管道相关命令

目标

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

准备工作

vim 1.txt

代码语言:javascript
复制
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

按字符选取内容

代码语言:javascript
复制
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)

代码语言:javascript
复制
head -2 1.txt | cut -d ':' -f 1,2
代码语言:javascript
复制
head -2 1.txt | cut -d ':' -f 1-2

1.3 小结

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

2 sort

2.1 目标

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

2.2 路径

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

2.3 实现

第一步: 对字符串排序

代码语言:javascript
复制
[root@node01 tmp]# cat 2.txt
banana
apple
pear
orange
pear

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

第二步: 去重排序

参数

英文

含义

-u

unique

去掉重复的

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

代码语言:javascript
复制
[root@node01 tmp]# sort -u 2.txt 
apple
banana
orange
pear

第三步: 对数值排序

参数

英文

含义

-n

numeric-sort

按照数值大小排序

-r

reverse

使次序颠倒

第四步: 对成绩排序

参数

英文

含义

-t

field-separator

指定字段分隔符

-k

key

根据那一列排序

‘’

代码语言:javascript
复制
# 根据第二段成绩 进行倒序显示 所有内容
sort -t ',' -k2nr score.txt 

3 wc命令

3.1 目标

  • 显示指

3.2 路径

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

3.3 实现

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

命令

含义

wc 文件名

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

代码语言:javascript
复制
[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

行数

代码语言:javascript
复制
[root@hadoop01 export]# wc 4.txt 
 6 21 85 3.txt

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

代码语言:javascript
复制
[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 目录下 有多少个 子内容

代码语言:javascript
复制
[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 唯一

去除重复行

代码语言:javascript
复制
# 准备内容
[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

统计每行内容出现的次数

代码语言:javascript
复制
[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 可以将命令结果 通过管道 输出到 多个文件中

5.3 小结

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

6 tr

spark

6.1 目标

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

6.2 路径

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

6.3 实现

第一步: 实现 替换效果

命令

英文

含义

命令结果 | tr 被替换的字符 新字符

translate

实现 替换效果

代码语言:javascript
复制
# 将 小写i 替换成  大写 I
# 把itheima的转换为大写
# 把 HELLO 转成 小写
代码语言:javascript
复制
# 将 小写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中的数字
代码语言:javascript
复制
echo 'abc1d4e5f' | tr -d '[0-9]'

第三步: 单词计数

准备工作
代码语言:javascript
复制
[root@hadoop01 export]# cat words.txt 
hello,world,hadoop
hive,sqoop,flume,hello
kitty,tom,jerry,world
hadoop

1 将, 换成 换行

2 排序

3 去重

4 计数

代码语言:javascript
复制
# 统计每个单词出现的次数
[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

7 split

7.1 目标

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

7.2 路径

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

7.3 实现

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

命令

英文

含义

split -b 10k 文件

byte

将大文件切分成若干10KB的小文件

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

命令

英文

含义

split -l 1000 文件

lines

将大文件切分成若干1000行 的小文件

7.4 小结

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 {这里面放的是处理完所有的行后要执行的语句 }

代码语言:javascript
复制
awk -F ',' 'BEGIN{}{total=total+$4}END{print total, NR, (total/NR)}' score.txt

9 sed

9.1 目标

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

9.2 路径

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

9.3 实现

第一步: 实现 查询 功能

命令

含义

sed 可选项 目标文件

对目标文件 进行 过滤查询 或 替换

可选参数

可选项

英文

含义

p

print

打印

$

代表 最后一行

-n

仅显示处理后的结果

-e

expression

根据表达式 进行处理

  • 练习1 列出 1.txt的 1~5行 的数据
代码语言:javascript
复制
sed -n -e '1,5p' 1.txt 
  • 练习2 列出01.txt的所有数据
代码语言:javascript
复制
sed -n -e '1,$p' 1.txt 
  • 练习3 列出01.txt的所有数据 且 显示行号

可选项

含义

=

打印当前行号

代码语言:javascript
复制
sed -n -e '1,$=' -e '1,$p' 1.txt 

简化版
cat -n 1.txt
cat -b 1.txt
nl 1.txt
  • 练习4: 查找01.txt中包含root行

答案:

代码语言:javascript
复制
sed -n -e '/root/p' 1.txt
  • 练习5 列出01.txt中包含root的内容,root不区分大小写,并显示行号

可选项

英文

含义

I

ignore

忽略大小写

答案:

代码语言:javascript
复制
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

识别正则

答案:

代码语言:javascript
复制
nl 01.txt | sed -nr -e '/r+t/p'

或者

代码语言:javascript
复制
sed -nr -e '/r+t/p' -e '/r+t/=' 01.txt

第二步: 实现 删除 功能

  • 练习1 删除01.txt中前3行数据,并显示行号

可选项

英文

含义

d

delete

删除指定内容

答案:

代码语言:javascript
复制
nl 01.txt | sed -e '1,3d'
  • 练习2 保留1.txt中前4行数据,并显示行号

答案:

代码语言:javascript
复制
nl 01.txt | sed -e '5,$d'

nl 1.txt | sed -n -e '1,4p'

第三步: 实现 修改 功能

  • 练习1: 在01.txt的第二行后添加aaaaa,并显示行号

参数

英文

含义

i

insert

目标前面 插入内容

a

append

目标后面 追加内容

答案:

代码语言:javascript
复制
nl 01.txt | sed -e '2a aaaaa'
  • 练习2 在1.txt的第1行前添加bbbbb,并显示行号

答案:

代码语言:javascript
复制
nl 01.txt | sed -e '1i bbbbb'

第四步: 实现 替换 功能

  • 练习1 把1.txt中的nologin替换成为huawei,并显示行号

英文

含义

s/oldString/newString/

replace

替换

答案:

代码语言:javascript
复制
nl 1.txt | sed -e 's/nologin/huawei/'
  • 练习2 把01.txt中的1,2行替换为aaa,并显示行号

选项

英文

2c 新字符串

replace

使用新字符串 替换 选中的行

答案:

代码语言:javascript
复制
nl passwd | sed -e '1,2c aaa'

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

  • 练习1 在01.txt中把nologin替换为 huawei

参数

英文

含义

-i

in-place

替换原有文件内容

答案:

代码语言:javascript
复制
sed -i -e 's/nologin/huawei/' 01.txt
  • 练习2 在01.txt文件中第2、3行替换为aaaaaa

答案:

代码语言:javascript
复制
sed -i -e '2,3c aaa' 01.txt

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

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

答案:

代码语言:javascript
复制
sed -i -e '1,2d' 01.txt


nl passwd 查看数据

第六步: 综合 练习

  • 练习1 获取ip地址

答案:

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

答案:

代码语言:javascript
复制
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,并显示行号

答案:

代码语言:javascript
复制
nl 01.txt | sed -e '1,2d' | sed -e 's/nologin/itheima/'
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 管道相关命令
    • 目标
    • 1 cut
      • 1.1 目标
        • 1.2 实现
          • 第一步: 截取出1.txt文件中前2行的第5个字符
          • 第二步: 截取出1.txt文件中前2行以”:”进行分割的第1,2段内容
        • 1.3 小结
        • 2 sort
          • 2.1 目标
            • 2.2 路径
              • 2.3 实现
                • 第一步: 对字符串排序
                • 第二步: 去重排序
                • 第三步: 对数值排序
                • 第四步: 对成绩排序
            • 3 wc命令
              • 3.1 目标
                • 3.2 路径
                  • 3.3 实现
                    • 第一步: 显示指定文件 字节数, 单词数, 行数 信息.
                    • 第二步: 只显示 文件 的行数
                    • 第三步: 统计多个文件的 行数 单词数 字节数
                    • 第四步: 查看 /etc 目录下 有多少个 子内容
                  • 3.4 小结
                  • 4 uniq
                    • 4.1 目标
                      • 4.2路径
                        • 4.3 实现
                          • 第一步:实现去重效果
                          • 第二步:不但去重,还要 统计出现的次数
                        • 4.4 小结
                        • 5 tee
                          • 5.1 目标
                            • 5.2 实现
                              • 5.3 小结
                              • 6 tr
                                • 6.1 目标
                                  • 6.2 路径
                                    • 6.3 实现
                                      • 第一步: 实现 替换效果
                                      • 第二步: 实现删除效果
                                      • 第三步: 单词计数
                                  • 7 split
                                    • 7.1 目标
                                      • 7.2 路径
                                        • 7.3 实现
                                          • 第一步: 按 字节 将 大文件 切分成 若干小文件
                                          • 第二步: 按 行数 将 大文件 切分成 若干小文件
                                        • 7.4 小结
                                        • 8 awk
                                          • 8.1 目标
                                            • 8.2 步骤
                                              • 8.3 实现
                                                • 第一步: 搜索 zhangsan 和 lisi 的成绩
                                                • 第二步: 指定分割符, 根据下标显示内容
                                                • 第三步: 指定分割符, 根据下标显示内容
                                                • 第四步: 调用 awk 提供的函数
                                                • 第五步: if语句 查询及格的学生信息
                                                • 第六步: 段内容 求学科平均分
                                            • 9 sed
                                              • 9.1 目标
                                                • 9.2 路径
                                                  • 9.3 实现
                                                    • 第一步: 实现 查询 功能
                                                    • 第二步: 实现 删除 功能
                                                    • 第三步: 实现 修改 功能
                                                    • 第四步: 实现 替换 功能
                                                    • 第五步: 对 原文件 进行操作
                                                    • 第六步: 综合 练习
                                                领券
                                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档