首页 > 系统教程 > LINUX > 正文

【愚公系列】2023年11月 大数据教学课程 004-Linux管道相关命令

看不見的法師
发布: 2025-07-13 08:02:35
原创
578人浏览过

?前言

linux和其他类unix系统中,管道(pipeline)是将一个命令的输出直接传递给另一个命令的一种方法,以便实现高效的数据处理和传输。

?一、管道相关命令?1.cut

数据准备

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">cd /export/ && rm -rf *vim 1.txt     111:aaa:bbb:ccc222:ddd:eee:fff333:ggg:hhh444:iii</code>
登录后复制

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

命令

含义

cut 动作 文件

从指定文件 截取内容

参数

参数

英文

含义

-c

characters

按字符选取内容

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# cut -c 5 1.txt adgi[root@node01 export]# cat 1.txt 111:aaa:bbb:ccc222:ddd:eee:fff333:ggg:hhh444:iii[root@node01 export]# cat 1.txt | cut -c 5adgi[root@node01 export]# head -2 1.txt 111:aaa:bbb:ccc222:ddd:eee:fff[root@node01 export]# head -2 1.txt | cut -c 5ad</code>
登录后复制

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

参数

英文

含义

-d '分隔符'

delimiter

指定分隔符

-f n1,n2

fields

分割以后显示第几段内容, 使用 , 分割

范围控制

范围

含义

n

只显示第n项

n-

显示 从第n项 一直到行尾

n-m

显示 从第n项 到 第m项(包括m)

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">head -2 1.txt | cut -d ':' -f 1,2,3</code>
登录后复制

或者

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">head -2 1.txt | cut -d ':' -f 1-3</code>
登录后复制
【愚公系列】2023年11月 大数据教学课程 004-Linux管道相关命令
?2.sort

数据准备

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">cd /exportvim 2.txtbananaapplepearorangepear</code>
登录后复制

第一步: 对字符串排序.

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# cat 2.txt bananaapplepearorangepear[root@node01 export]# sort 2.txt applebananaorangepearpear[root@node01 export]# cat 2.txt | sortapplebananaorangepearpear</code>
登录后复制

第二步: 去重排序

参数

英文

含义

-u

unique

去掉重复的

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

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# cat 2.txt bananaapplepearorangepear[root@node01 export]# sort 2.txt applebananaorangepearpearYou have new mail in /var/spool/mail/root[root@node01 export]# sort -u 2.txt applebananaorangepear[root@node01 export]# cat 2.txt | sort -uapplebananaorangepear</code>
登录后复制

第三步: 对数值排序

数据准备

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">cd /export/vim 3.txt1357112461089</code>
登录后复制

参数

英文

含义

-n

numeric-sort

按照数值大小排序

-r

reverse

使次序颠倒

1、默认按照字符串排序

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# sort 3.txt 1101123456789[root@node01 export]# cat 3.txt | sort1101123456789</code>
登录后复制

2、升序

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# sort -n 3.txt 1234567891011[root@node01 export]# cat 3.txt | sort -n1234567891011</code>
登录后复制

3、倒序

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# cat 3.txt | sort -n -r1110987654321</code>
登录后复制

4、合并式

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# cat 3.txt | sort -nr1110987654321</code>
登录后复制

第四步: 对成绩排序

数据准备

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">cd /exportvim 4.txtzhangsan 68 99 26lisi 98 66 96wangwu 38 33 86zhaoliu 78 44 36maqi 88 22 66zhouba 98 44 46</code>
登录后复制

参数

英文

含义

-t

field-separator

指定字段分隔符

-k

key

根据那一列排序

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

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# cat 4.txt zhangsan 68 99 26lisi 98 66 96wangwu 38 33 86zhaoliu 78 44 36maqi 88 22 66zhouba 98 44 46[root@node01 export]# cat 4.txt | sort -t ' ' -k 2wangwu 38 33 86zhangsan 68 99 26zhaoliu 78 44 36maqi 88 22 66zhouba 98 44 46lisi 98 66 96[root@node01 export]# cat 4.txt | sort -t ' ' -k 2 -n -rzhouba 98 44 46lisi 98 66 96maqi 88 22 66zhaoliu 78 44 36zhangsan 68 99 26wangwu 38 33 86</code>
登录后复制
?3.wc

数据准备

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">cd /export/vim 5.txt111222 bbb333 aaa bbb 444 aaa bbb ccc555 aaa bbb ccc ddd666 aaa bbb ccc ddd eee</code>
登录后复制

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

命令

含义

wc 文件名

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

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

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# wc 5.txt  6 21 85 5.txt[root@node01 export]# cat 5.txt 111222 bbb333 aaa bbb 444 aaa bbb ccc555 aaa bbb ccc ddd666 aaa bbb ccc ddd eee[root@node01 export]# cat 5.txt | wc      6      21      85</code>
登录后复制

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

参数

英文

含义

-c

bytes

字节数

-w

words

单词数

-l

lines

行数

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# cat 5.txt 111222 bbb333 aaa bbb 444 aaa bbb ccc555 aaa bbb ccc ddd666 aaa bbb ccc ddd eeeYou 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 -l6</code>
登录后复制

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

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[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</code>
登录后复制

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

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">ll /etc | wc -l</code>
登录后复制
【愚公系列】2023年11月 大数据教学课程 004-Linux管道相关命令
?4.uniq

数据准备

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">cd /export/vim 6.txt张三    98李四    100王五    90赵六    95麻七    70李四    100王五    90赵六    95麻七    70</code>
登录后复制

第一步:实现去重效果

命令

英文

含义

uniq [参数] 文件

unique 唯一

去除重复行

实现去重效果

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[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</code>
登录后复制

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

参数

英文

含义

-c

count

统计每行内容出现的次数

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# cat 6.txt | sort | uniq -c1 张三    982 李四    1002 王五    902 赵六    952 麻七    70</code>
登录后复制
?5.tee

命令

含义

命令结果 | tee 文件1 文件2 文件3

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

将去重统计的结果 放到 a.txt、b.txt、c.txt 文件中

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# ls2.txt  3.txt  4.txt  5.txt  6.txt[root@node01 export]# cat 6.txt | sort | uniq -c | tee a.txt b.txt c.txt1 张三    982 李四    1002 王五    902 赵六    952 麻七    70[root@node01 export]# ls2.txt  3.txt  4.txt  5.txt  6.txt  a.txt  b.txt  c.txt[root@node01 export]# cat a.txt 1 张三    982 李四    1002 王五    902 赵六    952 麻七    70</code>
登录后复制
?6.tr

数据准备

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">cd /exportvim 7.txtitheimaHELLOabc1d4e5f</code>
登录后复制

第一步: 实现 替换效果

命令

英文

含义

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

translate

实现 替换效果

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# cat 7.txt itheimaHELLOabc1d4e5f[root@node01 export]# cat 7.txt | tr 'i' 'I'ItheImaHELLOabc1d4e5f[root@node01 export]# cat 7.txt | tr [a-z] [A-Z]ITHEIMAHELLOABC1D4E5FYou have new mail in /var/spool/mail/root[root@node01 export]# cat 7.txt | tr [A-Z] [a-z]itheimahelloabc1d4e5f</code>
登录后复制

第二步: 实现删除效果

命令

英文

含义

命令结果 | tr -d 被删除的字符

delete

删除指定的字符

.

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">echo 'abc1d4e5f' | tr -d [0-9]</code>
登录后复制
【愚公系列】2023年11月 大数据教学课程 004-Linux管道相关命令

第三步: 单词计数

数据准备

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">cd /exportvim 8.txthello,world,hadoophive,sqoop,flume,hellokitty,tom,jerry,worldhadoop</code>
登录后复制
代码语言:javascript代码运行次数:0运行复制
<code class="javascript">-------- 查看文件内容[root@node01 export]# cat 8.txt  hello,world,hadoophive,sqoop,flume,hellokitty,tom,jerry,worldhadoop-------- 将 逗号, 替换成 换行符[root@node01 export]# cat 8.txt | tr ',' '\n'helloworldhadoophivesqoopflumehellokittytomjerryworldhadoop-------- 排序[root@node01 export]# cat 8.txt | tr ',' '\n' | sortflumehadoophadoophellohellohivejerrykittysqooptomworldworld-------- 去重[root@node01 export]# cat 8.txt | tr ',' '\n' | sort | uniqflumehadoophellohivejerrykittysqooptomworld-------- 计数[root@node01 export]# cat 8.txt | tr ',' '\n' | sort | uniq -c1 flume2 hadoop2 hello1 hive1 jerry1 kitty1 sqoop1 tom2 world[root@node01 export]# </code>
登录后复制
?7.split

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

命令

英文

含义

split -b 10k 文件

byte

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

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# ll -htotal 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]# lltotal 216-rw-r--r-- 1 root root 106538 Jul 12 20:35 v.txt-rw-r--r-- 1 root root  20480 Jul 12 20:39 xaa-rw-r--r-- 1 root root  20480 Jul 12 20:39 xab-rw-r--r-- 1 root root  20480 Jul 12 20:39 xac-rw-r--r-- 1 root root  20480 Jul 12 20:39 xad-rw-r--r-- 1 root root  20480 Jul 12 20:39 xae-rw-r--r-- 1 root root   4138 Jul 12 20:39 xaf</code>
登录后复制

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

命令

英文

含义

split -l 1000 文件

lines

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

代码语言:javascript代码运行次数:0运行复制
<code class="javascript"># 清空不用的内容[root@node01 export]# rm -rf x*# 罗列当前目录中内容[root@node01 export]# lsv.txt# 查看指定文件的行数: 共 2780行[root@node01 export]# wc -l v.txt 2780 v.txt# 按照行数 每个文件1000行 进行切割[root@node01 export]# split -l 1000 v.txt # 查看当前文件下每个文件的行数[root@node01 export]# wc -l *  2780 v.txt  1000 xaa  1000 xab   780 xac</code>
登录后复制
?8.awk(重点)

第一步: 搜索含有 zhangli 的学生成绩

命令

含义

awk ‘/搜索字符/’ score.txt

模糊查询

代码语言:javascript代码运行次数:0运行复制
<code class="javascript"># 查看文档内容[root@node01 export]# cat score.txt zhangsan 68 99 26lisi 98 66 96wangwu 38 33 86zhaoliu 78 44 36maq 88 22 66zhouba 98 44 46# 搜索含有 zhang  和 li 的学生成绩[root@node01 export]# cat score.txt | awk '/zhang|li/'zhangsan 68 99 26lisi 98 66 96zhaoliu 78 44 36</code>
登录后复制

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

命令

含义

awk -F ‘,’ ‘{print $1, $2, $3}’ 文件

操作1.txt文件, 根据 逗号 分割, 打印 第一段 第二段 第三段 内容

选项

选项

英文

含义

-F ','

field-separator

使用 指定字符 分割

$ + 数字

获取第几段内容

$0

获取 当前行 内容

NF

field

表示当前行共有多少个字段

$NF

代表 最后一个字段

$(NF-1)

代表 倒数第二个字段

虎课网
虎课网

虎课网是超过1800万用户信赖的自学平台,拥有海量设计、绘画、摄影、办公软件、职业技能等优质的高清教程视频,用户可以根据行业和兴趣爱好,自主选择学习内容,每天免费学习一个...

虎课网 62
查看详情 虎课网

NR

代表 处理的是第几行

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# cat score.txt zhangsan 68 99 26lisi 98 66 96wangwu 38 33 86zhaoliu 78 44 36maq 88 22 66zhouba 98 44 46[root@node01 export]# cat score.txt | awk -F ' ' '{print $1,$2,$3}'zhangsan 68 99lisi 98 66wangwu 38 33zhaoliu 78 44maq 88 22zhouba 98 44</code>
登录后复制

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

命令

含义

awk -F ’ ’ ‘{OFS=“===”}{print $1, $2, $3}’ 1.txt

操作1.txt文件, 根据 逗号 分割, 打印 第一段 第二段 第三段 内容

选项

选项

英文

含义

OFS="字符"

output field separator

向外输出时的段分割字符串

转义序列

含义

\b

退格

\f

换页

\n

换行

\r

回车

\t

制表符

代码语言:javascript代码运行次数:0运行复制
<code class="javascript"># 查看文档内容[root@node01 export]# cat score.txtzhangsan 68 99 26lisi 98 66 96wangwu 38 33 86zhaoliu 78 44 36maq 88 22 66zhouba 98 44 46# 按照 === 进行分割, 打印 第一段 第二段 第三段[root@node01 export]# cat score.txt | awk -F ' ' '{OFS="==="}{print $1,$2,$3}'zhangsan===68===99lisi===98===66wangwu===38===33zhaoliu===78===44maq===88===22zhouba===98===44# 按照 制表符tab 进行分割, 打印 第一段 第二段 第三段[root@node01 export]# cat score.txt | awk -F ' ' '{OFS="\t"}{print $1,$2,$3}'zhangsan        68      99lisi    98      66wangwu  38      33zhaoliu 78      44maq     88      22zhouba  98      44</code>
登录后复制

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

命令

含义

awk -F ‘,’ ‘{print toupper($2)}’ 1.txt

操作1.txt文件, 根据 逗号 分割, 打印 第一段 第二段 第三段 内容

常用函数如下:

函数名

含义

作用

toupper()

upper

字符 转成 大写

tolower()

lower

字符 转成小写

length()

length

返回 字符长度

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# cat score.txt zhangsan 68 99 26lisi 98 66 96wangwu 38 33 86zhaoliu 78 44 36maq 88 22 66zhouba 98 44 46# 打印第一段内容[root@node01 export]# cat score.txt | awk -F ' ' '{print $1}'zhangsanlisiwangwuzhaoliumaqzhouba# 将第一段内容转成大写 且 显示[root@node01 export]# cat score.txt | awk -F ' ' '{print toupper($1)}'ZHANGSANLISIWANGWUZHAOLIUMAQZHOUBA</code>
登录后复制

第五步: 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”, 就打印这一行内容

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# cat score.txt zhangsan 68 99 26lisi 98 66 96wangwu 38 33 86zhaoliu 78 44 36maq 88 22 66zhouba 98 44 46# 打印及格的同学信息[root@node01 export]# cat score.txt | awk -F ' ' '{if($4>60) print $1,$4,"及格"}'lisi 96 及格wangwu 86 及格maq 66 及格# 显示学生的及格状态[root@node01 export]# cat score.txt | awk -F ' ' '{if($4>60) print $1,$4,"及格"; else print $1,$4,"不及格"}'zhangsan 26 不及格lisi 96 及格wangwu 86 及格zhaoliu 36 不及格maq 66 及格zhouba 46 不及格</code>
登录后复制

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

命令

含义

awk ‘BEGIN{初始化操作}{每行都执行} END{结束时操作}’ 文件名

BEGIN{ 这里面放的是执行前的语句 }{这里面放的是处理每一行时要执行的语句}END {这里面放的是处理完所有的行后要执行的语句 }

代码语言:javascript代码运行次数:0运行复制
<code class="javascript"># 查看文档内容[root@node01 export]# cat score.txt zhangsan 68 99 26lisi 98 66 96wangwu 38 33 86zhaoliu 78 44 36maq 88 22 66zhouba 98 44 46# 查看总分[root@node01 export]# cat score.txt | awk -F ' ' 'BEGIN{}{total=total+$4} END{print total}'356# 查看总分, 总人数[root@node01 export]# cat score.txt | awk -F ' ' 'BEGIN{}{total=total+$4} END{print total, NR}'356 6# 查看总分, 总人数, 平均分[root@node01 export]# cat score.txt | awk -F ' ' 'BEGIN{}{total=total+$4} END{print total, NR, (total/NR)}'356 6 59.3333</code>
登录后复制
?9.sed

第一步: 实现 查询 功能

命令

含义

sed 可选项 目标文件

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

可选参数

可选项

英文

含义

p

print

打印

$

代表 最后一行

-n

仅显示处理后的结果

-e

expression

根据表达式 进行处理

1、列出 1.txt的 3~5行 的数据

代码语言:javascript代码运行次数:0运行复制
<code class="javascript"># 查看所有内容[root@node01 export]# cat 1.txt aaa java rootbbb helloccc rtddd root nologineee rttfff ROOT nologinggg rttt# 查看前3~5行内容[root@node01 export]# cat 1.txt | sed -n -e '3,5p' ccc rtddd root nologineee rtt</code>
登录后复制

2、列出01.txt的所有数据

代码语言:javascript代码运行次数:0运行复制
<code class="javascript"># 查看文件所有内容[root@node01 export]# cat 1.txt aaa java rootbbb helloccc rtddd root nologineee rttfff ROOT nologinggg rttt# 查看文件所有内容, $代表最后一行[root@node01 export]# cat 1.txt | sed -n -e '1,$p'aaa java rootbbb helloccc rtddd root nologineee rttfff ROOT nologinggg rttt</code>
登录后复制

3、列出01.txt的3-5行数据 且 显示行号

可选项

含义

=

打印当前行号

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# sed -n -e '3,5=' -e '3,5p' 1.txt  3ccc rt4ddd root nologin5eee rtt[root@node01 export]# cat 1.txt aaa java rootbbb helloccc rtddd root nologineee rttfff ROOT nologinggg rttt[root@node01 export]# cat -n 1.txt 1  aaa java root2  bbb hello3  ccc rt4  ddd root nologin5  eee rtt6  fff ROOT nologin7  ggg rttt[root@node01 export]# cat -n 1.txt | sed -n -e '3,5p'3  ccc rt4  ddd root nologin5  eee rtt</code>
登录后复制

4、查找 1.txt 中包含 root

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# cat 1.txt aaa java rootbbb helloccc rtddd root nologineee rttfff ROOT nologinggg rttt[root@node01 export]# cat 1.txt | sed -n -e '/root/p'aaa java rootddd root nologin[root@node01 export]# cat 1.txt | grep root   aaa java rootddd root nologin</code>
登录后复制

5、列出01.txt中包含root的内容,root不区分大小写,并显示行号

可选项

英文

含义

I

ignore

忽略大小写

答案:

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# cat -n 1.txt | sed -n -e '/root/Ip'     1  aaa java root     4  ddd root nologin     6  fff ROOT nologin     [root@node01 export]# cat -n 1.txt | grep -i root     1  aaa java root     4  ddd root nologin     6  fff ROOT nologin</code>
登录后复制

6、查找出1.txt中 字母r后面是多个t的行,并显示行号

可选项

英文

含义

-r

regexp-extended

识别正则

代码语言:javascript代码运行次数:0运行复制
<code class="javascript"># 显示所有 且 显示行号[root@node01 export]# cat -n 1.txt 1  aaa java root2  bbb hello3  ccc rt4  ddd root nologin5  eee rtt6  fff ROOT nologin7  ggg rttt# 搜索匹配的行[root@node01 export]# cat -n 1.txt | sed -n -r -e '/r+t/p'3  ccc rt5  eee rtt7  ggg rttt</code>
登录后复制

第二步: 实现 删除 功能

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

可选项

英文

含义

d

delete

删除指定内容

代码语言:javascript代码运行次数:0运行复制
<code class="javascript"># 打印所有内容 且 显示行号[root@node01 export]# nl 1.txt      1  aaa java root     2  bbb hello     3  ccc rt     4  ddd root nologin     5  eee rtt     6  fff ROOT nologin     7  ggg rttt        [root@node01 export]# nl 1.txt | sed -e '1,3d'     4  ddd root nologin     5  eee rtt     6  fff ROOT nologin     7  ggg rttt</code>
登录后复制

2、保留1.txt中前3行数据,并显示行号

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# nl 1.txt | sed -e '4,$d'1  aaa java root2  bbb hello3  ccc rt# 显示前三行内容[root@node01 export]# head -3 1.txt aaa java rootbbb helloccc rt# 显示前三行内容 且带 序号[root@node01 export]# head -3 1.txt | nl1  aaa java root2  bbb hello3  ccc rt# 显示所有[root@node01 export]# nl 1.txt 1  aaa java root2  bbb hello3  ccc rt4  ddd root nologin5  eee rtt6  fff ROOT nologin7  ggg rttt# 显示前三行内容 且带 序号[root@node01 export]# nl 1.txt | head -31  aaa java root2  bbb hello3  ccc rt</code>
登录后复制

第三步: 实现 修改 功能

1、在01.txt的第二行 下面 添加aaaaa,并显示行号

参数

英文

含义

i

insert

目标前面 插入内容

a

append

目标后面 追加内容

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# nl 1.txt 1  aaa java root2  bbb hello3  ccc rt4  ddd root nologin5  eee rtt6  fff ROOT nologin7  ggg rttt[root@node01 export]# nl 1.txt | sed -e '2a aaaaaa'1  aaa java root2  bbb helloaaaaaa3  ccc rt4  ddd root nologin5  eee rtt6  fff ROOT nologin7  ggg rttt</code>
登录后复制

2、在1.txt的第1行前添加bbbbb,并显示行号

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# nl 1.txt 1  aaa java root2  bbb hello3  ccc rt4  ddd root nologin5  eee rtt6  fff ROOT nologin7  ggg rttt[root@node01 export]# nl 1.txt | sed -e '1i bbbbbbbbb'bbbbbbbbb1  aaa java root2  bbb hello3  ccc rt4  ddd root nologin5  eee rtt6  fff ROOT nologin7  ggg rttt</code>
登录后复制

第四步: 实现 替换 功能

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

英文

含义

s/oldString/newString/

replace

替换

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# nl 1.txt 1  aaa java root2  bbb hello3  ccc rt4  ddd root nologin5  eee rtt6  fff ROOT nologin7  ggg rttt[root@node01 export]# nl 1.txt | sed -e 's/root/huawei/'1  aaa java huawei2  bbb hello3  ccc rt4  ddd huawei nologin5  eee rtt6  fff ROOT nologin7  ggg rttt</code>
登录后复制

2、把01.txt中的1,2行替换为aaa,并显示行号

选项

英文

2c 新字符串

replace

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

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# nl 1.txt 1  aaa java root2  bbb hello3  ccc rt4  ddd root nologin5  eee rtt6  fff ROOT nologin7  ggg rttt[root@node01 export]# nl 1.txt | sed -e '2c aaaa'1  aaa java rootaaaa3  ccc rt4  ddd root nologin5  eee rtt6  fff ROOT nologin7  ggg rttt</code>
登录后复制

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

1、 在01.txt中把nologin替换为 huawei

参数

英文

含义

-i

in-place

替换原有文件内容

代码语言:javascript代码运行次数:0运行复制
<code class="javascript"># 备份原始文件内容cp 1.txt 2.txt# 原文件内容[root@node01 export]# cat 1.txt aaa java rootbbb helloccc rtddd root nologineee rttfff ROOT nologinggg rttt# 替换[root@node01 export]# sed -i -e 's/nologin/huawei/' 1.txt # 观察变化[root@node01 export]# cat 1.txt aaa java rootbbb helloccc rtddd root huaweieee rttfff ROOT huaweiggg rttt</code>
登录后复制

2、在01.txt文件中第2、3行替换为aaaaaa

代码语言:javascript代码运行次数:0运行复制
<code class="javascript"># 原文件内容[root@node01 export]# cat 1.txt aaa java rootbbb helloccc rtddd root huaweieee rttfff ROOT huaweiggg rttt# 替换[root@node01 export]# sed -i -e '2,3c aaaaaaa' 1.txt # 观察变化[root@node01 export]# cat 1.txt aaa java rootaaaaaaaddd root huaweieee rttfff ROOT huaweiggg rttt</code>
登录后复制

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

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

代码语言:javascript代码运行次数:0运行复制
<code class="javascript"># 查看原文件内容[root@node01 export]# cat 2.txt aaa java rootaaaaaaaddd root huaweieee rttfff ROOT huaweiggg rttt# 删除1,2行内容[root@node01 export]# sed -i -e '1,2d' 2.txt # 查看原文件内容[root@node01 export]# cat 2.txt ddd root huaweieee rttfff ROOT huaweiggg rttt</code>
登录后复制

第六步: 综合 练习

1、获取ip地址

符号

含义

^

表示开始

^aaa 表示以 aaa 开始

$

表示结尾

bbb$ 表示以 bbb 结尾

.*

表示任意

^.* 表示以 任意字符开始

代码语言:javascript代码运行次数:0运行复制
<code class="javascript"># 查看网卡信息[root@node01 export]# ifconfig eth0eth0      Link encap:Ethernet  HWaddr 00:0C:29:DF:0A:6A            inet addr:192.168.100.204  Bcast:192.168.100.255  Mask:255.255.255.0          inet6 addr: fe80::20c:29ff:fedf:a6a/64 Scope:Link          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          RX packets:12999 errors:0 dropped:0 overruns:0 frame:0          TX packets:7353 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000           RX bytes:1334125 (1.2 MiB)  TX bytes:1333707 (1.2 MiB)# 根据关键 搜索行[root@node01 export]# ifconfig eth0 | grep 'inet addr:'          inet addr:192.168.100.204  Bcast:192.168.100.255  Mask:255.255.255.0          # 去掉ip地址以前的部分[root@node01 export]# ifconfig eth0 | grep 'inet addr:' | sed -e 's/^.*addr://'192.168.100.204  Bcast:192.168.100.255  Mask:255.255.255.0# 去掉ip地址以后的部分[root@node01 export]# ifconfig eth0 | grep 'inet addr:' | sed -e 's/^.*addr://' | sed -e 's/Bcast:.*$//'192.168.100.204 </code>
登录后复制

2、从 2.txt 中提出数据,匹配出包含root的内容,再把nologin替换为itheima

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# nl 2.txt 1  aaa java root2  bbb hello3  ccc rt4  ddd root nologin5  eee rtt6  fff ROOT nologin7  ggg rttt# 匹配含有root内容的行[root@node01 export]# nl 2.txt | grep root1  aaa java root4  ddd root nologin# 匹配含有root内容的行 且 忽略大小写  [root@node01 export]# nl 2.txt | grep -i root1  aaa java root4  ddd root nologin6  fff ROOT nologin# 将nologin 替换成 itheima[root@node01 export]# nl 2.txt | grep -i root | sed -e 's/nologin/itheima/'  1  aaa java root4  ddd root itheima6  fff ROOT itheima</code>
登录后复制
代码语言:javascript代码运行次数:0运行复制
<code class="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}' #只显示替换内容的行</code>
登录后复制

3、从2.txt中提出数据,删除前2行,并把nologin替换为itheima,并显示行号

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">[root@node01 export]# nl 2.txt 1  aaa java root2  bbb hello3  ccc rt4  ddd root nologin5  eee rtt6  fff ROOT nologin7  ggg rttt# 删除前两行内容[root@node01 export]# nl 2.txt | sed -e '1,2d'3  ccc rt4  ddd root nologin5  eee rtt6  fff ROOT nologin7  ggg rttt# 替换内容[root@node01 export]# nl 2.txt | sed -e '1,2d' | sed -e 's/nologin/itheima/'3  ccc rt4  ddd root itheima5  eee rtt6  fff ROOT itheima7  ggg rttt</code>
登录后复制

?感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

以上就是【愚公系列】2023年11月 大数据教学课程 004-Linux管道相关命令的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号