linux 管道相关命令(待学)
1.1 cut
cut:以某种方式按照文件的行进行分割
参数列表:
-b 按字节选取 忽略多字节字符边界,除非也指定了 -n 标志
-c 按字符选取
-d 自定义分隔符,默认为制表符。
-f 与-d一起使用,指定显示哪个区域。
范围控制:
n:只有第n项
n-:从第n项一直到行尾
n-m:从第n项到第m项(包括m)
准备工作
vim 1.txt
111:aaa:bbb:ccc222:ddd:eee:fff333:ggg:hhh444:iii
cat 1.txt | cut -c 1
练习1 截取出1.txt文件中前2行的第5个字符
答案:
head -2 1.txt | cut -c 5
练习2 截取出1.txt文件中前2行以”:”进行分割的第1,2段内容
答案:
head -2 1.txt | cut -d ':' -f 1,2
或者
head -2 1.txt | cut -d ':' -f 1-2
练习3
截取出1.txt文件中前2行以”:”进行分割的第1,2,3段内容
答案:
head -2 1.txt | cut -d ':' -f 1,2,3
或者
head -2 1.txt | cut -d ':' -f 1-3
1.2 sort 的 工作原理
1.2.1 基本使用
sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
[root@node01 tmp]# cat 01.txtbananaapplepearorangepear[root@node01 tmp]# sort 01.txt applebananaorangepearpear
1.2.2 sort的-u选项
它的作用很简单,就是在输出行中去除重复行。
[root@node01 tmp]# sort -u 01.txt applebananaorangepear
pear由于重复被-u选项无情的删除了。
1. sort的-r 和 -n选项
[root@node01 tmp]# cat 02.txt 1357112461089
sort默认的排序方式是升序
[root@node01 tmp]# sort 02.txt 1101123456789
排序程序将这些数字按字符来排序了,排序程序会先比较1和2,显然1小,所以就将10放在2前面
[root@node01 tmp]# sort -n 02.txt1234567891011
-r表示降序,n表示按数字进行排序
[root@node01 tmp]# sort -n -r 02.txt1110987654321
合并式
[root@node01 tmp]# sort -nr 02.txt 1110987654321
1.3 wc命令
wc命令用于计算字数。
利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
1.3.1 语法
参数:
-c或--bytes或--chars 只显示Bytes数。
-l或--lines 只显示行数。
-w或--words 只显示字数。
--help 在线帮助。
--version 显示版本信息。
1.3.2 准备工作
111222 bbb333 aaa bbb 444 aaa bbb ccc555 aaa bbb ccc ddd666 aaa bbb ccc ddd eee
1.3.3 需求: 统计指定文件行数 字数 字节数
在默认的情况下,wc将计算指定文件的行数、字数,以及字节数。使用的命令为:
wc 文件名 使用 wc统计,结果如下:
[root@hadoop01 ~]# wc 01.txt 6 21 85 01.txtwc 01.txt # 01.txt 文件的统计信息6 21 85 01.txt # 01.txt文件: 行数为6, 单词数为 21, 字节数为 85其中,3 个数字分别表示 01.txt文件的行数、单词数,以及该文件的字节数。
1.3.4 需求: 统计多个文件的 行数 单词数 字节数
如果想同时统计多个文件的信息,例如同时统计01.txt 、02.txt 、03.txt,可使用如下命令:
[root@hadoop01 ~]# wc 01.txt 02.txt 03.txt 6 21 85 01.txt 2 3 12 02.txt 3 6 25 03.txt 11 30 122 总用量
1.3.5 需求: 查看 根目录下有多少个文件
[root@hadoop01 ~]# ls /bin cgroup etc lib lost+found misc net proc sbin srv tmp varboot dev home lib64 media mnt opt root selinux sys usr[root@hadoop01 ~]# ls / | wc -w23
1.4 uniq
uniq 命令用于检查及删除文本文件中重复出现的行,一般与 sort 命令结合使用。
1 参数说明:
-c 统计行数
2 准备工作
vim 5.txt
张三 98李四 100王五 90赵六 95麻七 70李四 100王五 90赵六 95麻七 70
3 练习1 去除5.txt中重复的行
答案:
cat 5.txt | sort | uniq
4 练习2 统计5.txt中每行内容出现的次数
答案:
cat 5.txt | sort | uniq -c
1.5 tee
tee 和 >类似,重定向的同时还在屏幕输出 参数说明: tee -a 内容追加 和 >> 类似
[root@hadoop01 tmp]# echo 'aaa' | tee 1.txtaaa[root@hadoop01 tmp]# cat 1.txtaaa[root@hadoop01 tmp]# echo 'bbb' | tee -a 1.txtbbb[root@hadoop01 tmp]# cat 1.txtaaabbb
练习1 统计5.txt中每行内容出现的次数输出到a.txt,并且把内容显示在控制台
答案:
sort 5.txt | uniq -c | tee a.txt
练习2 统计5.txt中每行内容出现的次数输出追加到a.txt,并且把内容显示在控制台
答案:
sort 5.txt | uniq -c | tee -a a.txt
1.6 tr
Linux tr 命令用于转换或删除文件中的字符。 tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。
-d, --delete:删除指令字符
练习1 把itheima的小写i换成大写I
答案:
echo "itheima" | tr 'i' 'I'
练习2 把itheima的小写i和a换成大写I和A
答案:
echo "itheima" | tr 'i' 'I' | tr 'a' 'A'
练习3 把itheima的转换为大写
答案:
echo "itheima" |tr '[a-z]' '[A-Z]'
练习4 删除abc1d4e5f中的数字
答案:
echo 'abc1d4e5f' | tr -d '[0-9]'
练习5 单词计数
words.txt中的内容如下:hello,world,hadoophive,sqoop,flume,hellokitty,tom,jerry,worldhadoop
cat words.txt | tr -s ',' '\n' | sort | uniq -c | sort -r | awk '{print $2, $1}'
脚本解释:
tr -s ' ' '\n' 表示:连续出现的空格只保留一个,并在空格处以换行符分割文本 tr -s ',' '\t' 表示 ,使用 tab代替
sort 表示:对输出文本进行排序
uniq -c 表示:对连续出现的重复的行进行计数
sort -r 表示:对输出文本进行降序排序
awk '{print $2, $1}' 表示:打印出文本的第二列和第一列
1.7 split
该指令将大文件分割成较小的文件,在默认情况下将按照每1000行切割成一个小文件 参数说明: -b<字节> : 指定每多少字节切成一个小文件 -l<行数> : 指定每多少行切成一个小文件
练习1 从/etc目录下查找以conf结尾的文件,并所有文件内容写入到v.txt
答案:
find /etc/ -type f -name "*conf" -exec cat {} >> v.txt \;[root@hadoop01 tmp]# rm -rf *[root@hadoop01 tmp]# ll总用量 0[root@hadoop01 tmp]# find /etc/ -type f -name "*conf" -exec cat {} >> v.txt \;[root@hadoop01 tmp]# ll总用量 420-rw-r--r--. 1 root root 429746 3月 17 23:15 v.txt[root@hadoop01 tmp]# wc v.txt 12982 56922 429746 v.txt
练习2 把v.txt进行分割
答案:
split v.txt
练习3 把v.txt按2000进行分割
答案:
split -l 2000 v.txt
练习4 把v.txt按10k进行分割
答案:
du –sh v.txtsplit -b 10k v.txt
hadoop数据的划分, 这个是物理上真真实实的进行了划分,数据文件上传到HDFS里的时候,需要划分成一块一块,默认的每个块128MB。
1.8 awk
1.8.1 简介
awk是一种处理文本文件的命令,是一个强大的文本分析工具。但是比较复杂,不过功能比sed更加的强大,它支持分段。默认每行按空格或TAB分割。
1.1 选项参数说明: -F 指定输入文件折分隔符
1.8.2 默认分段
默认每行按空格或TAB分割,使用$n来获取段号
vim 1.txt
aaa 111 333bbb 444 555ccc 666 777 888ddd 999 222 999
练习1 创建1.txt,输入内容,打印出第1段
答案:
awk '{print $1}' 1.txt
练习2 打印出1.txt的第1,2,3段
答案:
awk '{print $1,$2,$3}' 1.txt
练习3 打印出1.txt的第1,2,3段,并且使用#号连接
答案:
awk '{print $1"#"$2"#"$3}' 1.txt
1.8.3 段之间的连接符OFS
练习1
打印1,2,3段,指定#为连接符
答案:
awk '{OFS="#"}{print $1,$2,$3}' 1.txt
1.8.4 指定分隔符
-F 来指定分隔符
准备工作
vim 2.txt
aaa:111:333bbb:444:555ccc:666:777:888ddd:999:222:999:cccc
练习1
打印出2.txt的第1段
答案:
awk -F ':' '{print $1}' 2.txt
练习2
打印出2.txt的所有段
答案:
awk -F ':' '{print $0}' 2.txt
练习3
打印出2.txt的第1,3段
答案:
awk -F ':' '{print $1,$3}' 2.txt
1.8.5 内容匹配
练习1 匹配2.txt中包含cc的内容
答案:
awk '/cc/' 2.txt
练习2
匹配2.txt中第1段包含cc的内容
答案:
awk -F ':' '$1 ~ /cc/' 2.txt
练习3
匹配2.txt中第1段包含至少连续两个c的内容
答案:
awk -F ':' '$1 ~ /cc+/' 2.txt
练习4
在2.txt中如果匹配到aaa就打印第1,3段,如果匹配到ccc,就打印第1,3,4段
答案:
awk -F ':' '/aaa/ {print $1,$3} /ccc/ {print $1,$3,$4}' 1.txt
练习5
在2.txt中如果匹配到aaa或者ddd,就打印全部内容
答案:
awk -F ':' '/aaa|ddd/ {print $0}' 2.txt
1.8.6 段内容判断
练习1
在2.txt中如果第3段等于222就打印所有内容
答案:
awk -F ':' '$3==222 {print $0}' 2.txt
练习2
在2.txt中如果第3段等于333就打印第一段
答案:
awk -F ':' '$3==333 {print $1}' 2.txt
练习3
在2.txt中如果第3段大于等于300就打印第一段
答案:
awk -F ':' '$3>=300 {print $0}' 2.txt
练习4
在2.txt中如果第5段不等于cccc就打印全部
答案:
awk -F ':' '$5!="cccc" {print $0}' 2.txt
练习5
在2.txt中如果第1段等于ccc,并且第2段大于300就打印全部
答案:
awk -F ':' '$1=="ccc" && $2>300 {print $0}' 2.txt
练习6
在2.txt中如果第1段等于ccc,并且第2段匹配666就打印全部
答案:
awk -F ':' '$1=="ccc" && $2==666 {print $0}' 2.txt
1.8.7 段之间的比较
练习1
在2.txt中如果第3段小于第4段就打印全部
答案:
awk -F ':' '$3<$4 {print $0}' 2.txt
练习2
在2.txt中如果第2段等于第4段就打印全部
答案:
awk -F ':' '$2==$4 {print $0}' 2.txt
1.8.8 NR行号和 NF段数
练习1
打印2.txt全部内容显示行号
答案:
awk -F ':' '{print NR " : " $0}' 2.txt
练习2
打印2.txt全部内容显示段数
答案:
awk -F ':' '{print NF " : " $0}' 2.txt
练习3
打印2.txt前2行,并显示行号 (用三种不同的方式实现)
答案:
nl 2.txt | head -2nl 2.txt | sed -n -e '1,2p' awk -F ':' 'NR<=2 {print NR " " $0}' 2.txt
练习4
打印2.txt前2行,并且第1段匹配 aaa或者eee,打印全部,打印行号 (用两种方式)
答案:
nl 2.txt | head -2 | awk -F ':' '$1 ~ /aaa|eee/'
或者
awk -F ':' 'NR<=2 && $1 ~ /aaa|eee/ {print NR " " $0}' 2.txt
练习5 从2.txt的前3行中匹配出第2段等于 666,并显示行号(用两种方式)
答案:
nl passwd | head -n 3 | awk -F ":" '$7=="/sbin/nologin" {print $0}'
或者
awk -F ':' 'NR<=3 && $2==666 {print $0}' 2.txt
练习6
从2.txt前3行,把第1段内容替换为itheima,指定分隔符为|,显示行号(用两种方式)
答案:
nl 2.txt | head -3 | awk -F ':' '{OFS="|"} $1="itheima" {print NR " " $0}'
或者
awk -F ':' '{OFS="|"} NR<=3 && $1="itheima" {print NR " " $0}' 2.txt
1.8.9 分段求和
awk脚本,我们需要注意两个关键词BEGIN和END。 BEGIN{ 这里面放的是执行前的语句 } {这里面放的是处理每一行时要执行的语句} END {这里面放的是处理完所有的行后要执行的语句 }
2.8.1 练习1 对2.txt中的第2段求和
答案:
awk -F ':' 'BEGING{}{total=total+$2}END{print total}' 2.txt
1.8.10 综合练习
练习1
对统计awk目录下所有文本文件的大小
答案:
ll | awk 'BEGIN{}{total=total+$5} END{print(total)}'
练习2 打印99乘法表
答案:
awk 'BEGIN{ for(i=1;i<=9;i++){ for(j=1;j<=i;j++){ printf("%dx%d=%d%s", i, j, i*j, "\t" ) } printf("\n") } }'
1.9 sed
简介
sed命令是来处理文本文件。sed也可以实现grep的功能,但是要复杂一些。 它的强大之处在于替换。并且对于正则也是支持的。
参数说明:
-n 仅显示处理后的结果 -e 以选项中指定的脚本来处理输入的文本文件 -f 以选项中指定的脚本文件来处理输入的文本文件
动作说明:
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行 d :删除 a :新增,内容出现在下一行 i :插入, 内容出现在上一行 c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行 s :取代,可以直接进行取代的工作!通常这个 s 的动作可以搭配正规表示法! = :显示行号
准备数据
vim 1.txt
aaa java rootbbb helloccc rtddd root nologineee rttfff ROOT nologinggg rttt
1.9.1-n和p的组合:查找
练习1
查找01.txt中包含root行
答案:
sed -n -e '/root/p' 01.txt
练习2
查找出01.txt中包含一个或多个r,r后面是t,并显示行号
答案:
nl 01.txt | sed -nr -e '/r+t/p'
或者
sed -nr -e '/r+t/p' -e '/r+t/=' 01.txt
练习3
列出01.txt的第2行数据,并显示行号
答案:
nl 01.txt | sed -n -e '2p'
练习4 列出01.txt的第2到第5行数据,并显示行号
答案:
nl 01.txt |sed -n -e '2,5p' # 显示行号
练习5 列出01.txt全部的数据,并显示行号
答案:
nl 01.txtcat -n 01.txtsed -n -e '1,$p' -e '1,$=' 01.txt
练习6
列出01.txt中包含root的内容,root不区分大小写,并显示行号
答案:
nl 01.txt | sed -n -e '/root/Ip'nl 01.txt | grep -i rootcat -n 01.txt | grep -i root
1.9.2 d 删除
练习1
删除01.txt中前3行数据,并显示行号
答案:
nl 01.txt | sed -e '1,3d'
练习2
保留01.txt中前4行数据,并显示行号
答案:
nl 01.txt | sed -e '5,$d'
1.9.3 a 和i 添加
a:在行后面插入 (append) i:在行前面插入 (insert)
练习1:
在01.txt的第二行后添加aaaaa,并显示行号
答案:
nl 01.txt | sed '2a aaaaa'
练习2
在01.txt的第1行前添加bbbbb,并显示行号
答案:
nl 01.txt | sed -e '1i bbbbb'
1.9.4 s和c替换
s:对字符串进入替换 c:对行进行替换
练习1
把01.txt中的nologin替换成为itheima,并显示行号
答案:
nl passwd | sed -e 's/nologin/itheima/'
练习2
把01.txt中的1,2行替换为aaa,并显示行号
答案:
nl passwd | sed -e '1,2c aaa'
1.9.5 对原文件进行操作
注意:在进行操作之前,最好是对数据进行备份,放置操作失误,数据无法恢复!
练习1
删除01.txt中前2行数据,并且删除原文件中的数据
答案:
sed -i -e '1,2d' 01.txtnl passwd 查看数据
练习2
在01.txt中把nologin替换为itheima
答案:
sed -i -e 's/nologin/itheima/' 01.txt
练习3
在01.txt文件中第2、3行替换为aaa
答案:
sed -i -e '2,3c aaa' 01.txt
1.9.6 综合练习
练习1
获取ip地址
答案:
ifconfig eth0 | grep 'inet addr:' | sed -e 's/^.addr://' | sed -e 's/Bcast.//'
练习2
从01.txt中提出数据,删除前5行,并把nologin替换为itheima,并显示行号
答案:
nl 01.txt | sed -e '1,5d' | sed -e 's/nologin/itheima/'
练习3
从01.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}' #只显示替换内容的行
转载于:https://www.cnblogs.com/mediocreWorld/p/11456203.html
linux 管道相关命令(待学)相关推荐
- Linux操作系统相关命令
Linux操作系统相关命令 Linux中的命令格式为:command [options] [arguments] 中括号表示可选的,即有些命令不需要选项也不需要参数,但有的命令在运行时需要多个选项或参 ...
- Linux网络相关命令
Linux网络相关命令 1 ping 2 netstat 3 tranceroute 4 ARP 5 tcpdump 1 ping 作用:检测当前主机与目标主机之间的连通性(不是100%准确,有的服务 ...
- Linux用户相关命令
目录 简介 用户ID: UID-- UserIDentification 用户组ID:GID -- Group IDentification 用户和用户组关系 User相关命令 useradd -- ...
- Linux进程相关命令
一.ps命令 Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程, ps命令时列出当前进程的快照,想要动态的显示进程的相关信息,需要使用top命令 ① ...
- linux内核模块相关命令:lsmod,depmod,modprobe,modinfo,insmod,rmmod 使用说明
原文链接:http://www.cnblogs.com/jacklikedogs/p/4659249.html inux内核模块相关命令:lsmod,depmod,modprobe,modinfo,i ...
- linux shell 相关命令
查看空闲cpu ]#top -b -n 1 | grep Cpu | awk -F "," '{print $4}' | awk '{print $1}' 输出数字: echo & ...
- Linux管道命令及管道相关命令(详细)
文章目录 1. 什么是管道命令 2.第一个管道命令 3. cut 3.1 cut能干什么? 3.2 实现 3.2.1 截取出1.txt文件中前2行的第5个字符 3.2.2 截取出1.txt文件中前2行 ...
- Linux学习(三):管道相关命令
学习目标 熟练掌握以下命令 1.cut 2.sort 3.wc 4.uniq 5.tee 6.tr 7.split 8.awk 9.sed / grep 熟练掌握以下命令 1.cut 准备工作 成绩表 ...
- 【SRE笔记 2022.9.7 linux进程相关命令及源码包安装】
SRE笔记 2022.9.7 源码包 定义 源码包安装 优缺点 优点 缺点 获取 安装 C语言和开发 nginx安装示例 基础环境准备 gcc make wget 下载源码包 解压源码包,进入目录 ( ...
最新文章
- Unix的轻巧“约取而实得”(上篇)
- 一个提高查找速度的小技巧
- 别吵吵,分布式锁也是锁
- 实现一个悬浮在软键盘上的输入栏
- 寒假作业 使用xmind脑图小结课程内容
- 抵制羊毛党,图计算“加持”互联网电商风控
- r语言集合补集_R语言学习笔记(14)-常用包
- 好久没弄数学了,一本书上出现了,应该是指代了什么意思,问下.
- [Swift]LeetCode874. 模拟行走机器人 | Walking Robot Simulation
- 五步法建设你的数据中台
- oracle_home环境变量值,ORACLE_HOME环境变量配置阐明
- 获取英雄联盟全皮肤(极速版)
- 以衍复为例,聊聊当下的沪深300指数增强
- IOS 代码修改故事版中的自动布局参数
- 用stitching_detailed拼接图片失败,原因分析(待补充)
- centos yum 安装jdk
- 微型计算机原理与接口技术第六版周荷琴答案
- C#语言实例源码系列-实现加密exe文件
- 【书籍分享】C++ Primer 中文第五版 PDF
- ArcGIS趋势分析(Trend Analysis of Geostatistics)
热门文章
- python文件读取写入元组_python文件和元组
- IC面试:解决DDR3(项目)
- 互联网人,不拼体力拼什么?
- java regexoptions.compiled_RegexOptions.Compiled的含义和使用
- wifi显示请求服务器超时,wifi服务器链接超时怎么回事啊
- 盘点这些年错过的互联网暴富机会,大部分人都后知后觉
- 流利阅读Day9 Insects in Danger
- 亚马逊云 AWS Systems Manager 代理(SSM 代理)简介
- VR站与360地图/搜索达成战略合作,推出VR全景营销投放新模式
- 剖析软文标题创作的思维