?前言
在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>

数据准备
代码语言:javascript代码运行次数:0运行复制<code class="javascript">cd /exportvim 2.txtbananaapplepearorangepear</code>
第一步: 对字符串排序.
<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、默认按照字符串排序
<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>
数据准备
代码语言: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>
第三步: 统计多个文件的 行数 单词数 字节数
<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 目录下 有多少个 子内容 .
<code class="javascript">ll /etc | wc -l</code>

数据准备
代码语言: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>
命令
含义
命令结果 | 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>
数据准备
代码语言: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>

第三步: 单词计数
数据准备
代码语言:javascript代码运行次数:0运行复制<code class="javascript">cd /exportvim 8.txthello,world,hadoophive,sqoop,flume,hellokitty,tom,jerry,worldhadoop</code>
<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>
第一步: 按 字节 将 大文件 切分成 若干小文件
命令
英文
含义
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>
第一步: 搜索含有 zhang 和li 的学生成绩
命令
含义
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)
代表 倒数第二个字段
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>第一步: 实现 查询 功能
命令
含义
sed 可选项 目标文件
对目标文件 进行 过滤查询 或 替换
可选参数
可选项
英文
含义
p
打印
$
代表 最后一行
-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 行
<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
<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>
<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中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号