tr、wc、uniq、grep、diff
来源:互联网 发布:剑灵热巴数据 编辑:程序博客网 时间:2024/06/10 01:05
字符转换
tr 的作用一:替换(不改变源文件)
作用:字符转换工具
只能对stdin操作,不能直接对文件操作
格式: tr set1 set2 (同一位置set2替换set1)
例① 普通的替换
# echo 123456123456|tr 345 abc12abc612abc6
例② 在文本里的替换
# tr heze jinan < fuxingkai.txt fuxingkai njongyiyangjanalaarning linux
所以,并不能单词替换单词,仅仅是单个字符的一一对应替换!
例③ [ ]中括号表示范围的替换
# tr [a-z] [A-Z] <fuxingkai.txt FUXINGKAI ZHONGYIYANGHEZELEARNING LINUX
例④:
# tr ':' '\n' <fuxingkai.txt 将文件中的:全部替换为换行
tr的作用二:删除
tr -d [0:9] 删除0至9的数字 tr -d ‘%’ 删除%字符
tr的作用三:压缩(去重)
tr -s SET 将连续相同的字符压缩成一个字符# echo "1 2 3 4"|tr -s ' ' '\t'1 2 3 4(\t 代表制表符)
单引号和双引号的不同
- 单引号:输出纯字符,特殊符号失去作用;
- 双引号:元字符可以有特殊含义。
# meinv=qianqian ---定义变量meinv,赋值qianqian# echo "$meinv" ---输出meimv的值qianqian# echo '$meinv' ---输出$meinv$meinv
$ 元字符:能代表其他含义的字符,有特殊含义的字符,并不是代表本身字符的含义。
sort命令(不改变源文件)
作用:排序。默认按每行的第一个字符排序。
- -n:按数值大小进行排序;
- -r:递减排序(整行整行的处理) reverse;
- -k 3 指定第三列为排序键;
- -t: 指定字段分割符(默认分隔符是空白(空格、Tab))。
PS:
sort排序是按照行来排序的,可以理解为一行是一个整体!!
uniq命令
数据的实例统计。
作用:删除经过排序后的数据的重复记录。通常和sort连用。sort -n 文件 | uniq
- -c:统计特定记录出现的次数;
- -u:只显示唯一的行;
- -d:只显示重复的行。
# cat access_log |awk '{print $1}'|sort |uniq -c|sort -nr|head -3 ---只取第一列 666 172.16.68.155 648 172.16.70.199 490 172.16.88.88
cut命令(截取)
从文本文件或者文本流中提取文本列
格式:cut -选项 提取范围 文本文件常见选项
- -c:从指定提取范围中提取字符;
- -f:从指定提取范围中提取字段(=列);
- -d:指定分隔符默认是Tab。
#cut -d “:” -f 1,7 /etc/passwd#who | cut -d ' ' -f1,6 提取范围
- n:第n项;
- n-:第n项到行尾;
- -m:行首到第m项;
- n,m:第n项和第m项—单个的截取;
- n-m:第n项到第m项。
# cat name.txt |cut -c 2将文件里的每一行的第2个字符截取出来u1123
# cat name.txt |cut -c 2-5 截取第2个字符到第5个字符umbe12 11 2 3 # cat name.txt |cut -c -10 ---行首到第十项number nam112 l111 l22 zh23 de# cat name.txt |cut -c 5- ---第五项到末尾er name age address phone liu 18 shandong 123 li 20 hennan 345 zhang 16 beijing 789 deng 86 hubei 467# cat name.txt number name age address phone112 liu 18 shandong 123111 li 20 hennan 34522 zhang 16 beijing 78923 deng 86 hubei 467# cat name.txt |tr -s " "|cut -d " " -f 3age18201686# cat name.txt |tr -s " "|cut -d' ' -f3age18201686
小结
- tr
- -d 删除;
- -s 去重。
- sort
- -n 按数值大小排序;
- -k3 指定第三列为排序列;
- -r 递减。
- uniq
- -c 提取字符;
- -f 提取字段(==列);
- -d ‘%’ :按%来分隔字段。
练习
①只显示/etc/fstab文件的第三列# cat /etc/fstab|tr -s " "|cut -d ' ' -f3②用du -a只显示/boot目录下对象的占用空间,并按由小到大排序# du -a /boot|cut -f1|sort -n③只显示网卡eth0的IP地址#ip add|tail -3|head -1|tr -s ' '|cut -d ' ' -f3④用fdisk -l命令只显示出分区和文件系统的类型# fdisk -l|grep ^/dev/|tr -s " "|cut -d " " -f 1,7/dev/sda1 Linux/dev/sda2 LVM或 # fdisk -l|grep ^/dev/|awk '{print $1,$7}'/dev/sda1 Linux/dev/sda2 LVM⑤统计/etc/passwd文件中sbin这个单词出现多少次# cat /etc/passwd|grep -o sbin --color|wc -l--color 匹配的字符串显示颜色-o 只是显示匹配的字符串,其他的都不显示
正则表达式:
按照某种正常的规则组合起来的一个表达式,此表达式包含特殊字符+字符+数字等,用来表示一个特定的含义。
- 基本正则:特殊字符比较少;
- 扩展正则:元字符比较多,新加入了一些进来。
例:
# cat /etc/fstab |grep -E -v "^#|^$"不显示以#开头的行或者空行
grep命令(相当于过滤)
格式:grep -[acinv] ‘搜索内容串’ filename
- -a:以文本文件方式搜索;
- -c:计算找到的符合行的次数;
- -i:忽略大小写;
- -n:顺便输出行号;
- -o:只显示匹配的内容;
- -v:反转查找,输出与模式不相符的行 -v, –invert-match;
扩展
- -E:支持扩展正则表达式。
[root@chinaitsoft lianxi]# cat fruit.txt |grep -i appleappleorange APPLEpeach APPLE 456[root@chinaitsoft lianxi]#
PS:
egrep==grep -E ,效果一样。
在/lianxi目录下查找文件内容里包含apple的文件,显示出来:# grep -r apple /lianxi/lianxi/shuiguo.txt:apple/lianxi/fruit.txt:appleBinary file /lianxi/gcc-c++-4.4.7-4.el6.x86_64.rpm matches
wc 统计命令
- -l:统计行数;
- -w:统计单词数 (前后都是空白的一组字符);
- -c:统计字符数(可见和不可见的字符)。 -
练习
1、查找出当前passwd文件中以ftp或者mail开头的行,在屏幕上输出。# cat passwd|grep -E "^ftp|^mail" mail:x:8:12:mail:/var/spool/mail:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologin2、查找出当前passwd文件中首行不是以r、m、f开头的行,在屏幕上输出。# cat passwd |grep -E -v "^r|^m|^f" (或"^[rmf]")[rmf] 代表r或者m或者f中的一个。[a-z] 代表从a-z,中间很多字符3、查找出当前passwd文件中以bash结尾的行。# cat passwd |grep -E "bash$"4、查找出/etc/login.defs文件中的有效行(不显示空行和注释行)。# cat /etc/login.defs |grep -E -v "^$|^#"
diff命令:文件差异对比
diff命令:
比较两个文件之间的差异,输出结果为两个文件的不同之处。
diff命令的输出格式:
- -u:会将不同的地方放在一起,紧凑易读;
- -r: 递归比较目录下的所有文件;
- 利用diff命令生成补丁。
文件和文件的比较:
# diff -u chinaitsoft.txt chinaitsoft_v2.txt --- chinaitsoft.txt 2016-01-17 00:53:23.093940085 +0800+++ chinaitsoft_v2.txt 2016-01-17 00:51:25.747839493 +0800@@ -1,4 +1,6 @@ ---@@代表一段范围 jinan -代表第一个文件+changqing linux chinasotf+teacher feng
# diff -u chinaitsoft.txt chinaitsoft_v2.txt >v1-to-v2.patch生成补丁,补丁叫作v1-to-v2.patch
patch 打补丁命令
用途:用来打补丁修补文件
格式:patch [选项] 原始文件 < 补丁文件
- -pN: N表示忽略N层路径;
- -R: 还原到老版本。
注意事项: - 如果打多个补丁,注意先后顺序;
- 打补丁前不要修改源文件。
# patch chinaitsoft.txt <v1-to-v2.patch patching file chinaitsoft.txt# diff chinaitsoft.txt chinaitsoft_v2.txt
还原到原来的版本--->撤销打补丁# patch -R chinaitsoft.txt <v1-to-v2.patch patching file chinaitsoft.txt# diff chinaitsoft.txt chinaitsoft_v2.txt 1a2> changqing3a5> fenglaoshi
目录和目录的比较
1.新建目录及子目录和普通的文件[root@chinaitsoft lianxi]# mkdir qq[root@chinaitsoft lianxi]# cd qq/[root@chinaitsoft qq]# ls[root@chinaitsoft qq]# cp /etc/hosts .[root@chinaitsoft qq]# lshosts[root@chinaitsoft qq]# mkdir image sound[root@chinaitsoft qq]# lshosts image sound[root@chinaitsoft qq]# cd image/[root@chinaitsoft image]# ls[root@chinaitsoft image]# echo 123 >1.txt[root@chinaitsoft image]# ls1.txt[root@chinaitsoft image]#[root@chinaitsoft image]# cd ..[root@chinaitsoft qq]# lshosts image sound[root@chinaitsoft qq]# cd sound/[root@chinaitsoft sound]# echo "789" >3.txt[root@chinaitsoft sound]# ls3.txt[root@chinaitsoft sound]# cd ..[root@chinaitsoft qq]#[root@chinaitsoft qq]# cd ..2.生成一个升级版本的目录-r 递归的去比较子文件夹里的内容[root@chinaitsoft lianxi]# cp qq qqv2 -r[root@chinaitsoft lianxi]# diff -ur qq qqv23.更新qqv2里的内容[root@chinaitsoft lianxi]# cd qqv2[root@chinaitsoft qqv2]# lshosts image sound[root@chinaitsoft qqv2]# cp /etc/passwd .[root@chinaitsoft qqv2]# lshosts image passwd sound[root@chinaitsoft qqv2]# cd sound/[root@chinaitsoft sound]# echo "8900" >6.txt[root@chinaitsoft sound]# cd ..[root@chinaitsoft qqv2]# lshosts image passwd sound[root@chinaitsoft qqv2]# echo "123456" >hosts [root@chinaitsoft qqv2]# lshosts image passwd sound[root@chinaitsoft qqv2]#[root@chinaitsoft qqv2]# cd ..[root@chinaitsoft lianxi]# diff -Nur qq qqv2 -N 如果没有文件,就拿一个空文件和别的目录里的文件比较。
比较文件夹生成补丁:[root@chinaitsoft lianxi]# diff -Nur qq qqv2 >patch-v2.txt
/u/howard/src/blurfl/blurfl.c-p3 的效果就是去掉第3个/前面的内容,效果如下:src/blurfl/blurfl.c-p4 的效果就是去掉第4个/前面的内容,效果如下:blurfl/blurfl.c
阅读全文
0 0
- tr、wc、uniq、grep、diff
- more more grep sort uniq diff wc 命令的使用作用
- linux下常用的几个工具 (cut, uniq, wc, grep, sort, tr, paste)
- linux下常用的几个工具 (cut, uniq, wc, grep, sort, tr, paste)
- linux下常用的几个工具 (cut, uniq, wc, grep, sort, tr, paste)
- awk,sed,grep,cut,uniq,sort,tr,wc,head,tail的常见用法
- Linux管线命令 - cut,grep,sort,uniq,wc,tee,tr,col,join,paste,expand,split,xargs
- LINUX AWK UNIQ GREP WC
- uniq wc tr 的用法小记
- cut、sotr、uniq、wc、tee、split、tr
- Linux下Bash的管线pipe命令,cut,grep,sort,wc,uniq,tee,tr,col,join,past,expand
- shell 知识点补充(2)-重定向/ ; , &&, ||/管线命令/grep/sort/ uniq/wc/tee/tr/col/join/paste/expand/split/-
- Linux下Bash的管线pipe命令,cut,grep,sort,wc,uniq,tee,tr,col,join,past,expand
- 几个常用的文本处理shell 命令:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk
- 几个常用的文本处理shell 命令:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk
- Linux日记:cut grep sort wc&uniq
- cut,paste,sed,tr,grep,uniq,sort
- shell 基础 第二部分 ( cut ,sort, wc,uniq,tee ,tr)
- CreateToolhelp32Snapshot详解
- Hibernate 常用 API
- html之间传递参数
- 第三周周末总结
- SSH与SSM学习之hibernate14——Criteria查询
- tr、wc、uniq、grep、diff
- ZooKeeper中的数据模型
- UVA 101 The Blocks Problem
- PAT-1133 Splitting A Linked List(链表分解)
- 拓扑排序
- 第三周项目1
- 织梦cms 5.7文章内容关键词自定义长度修改
- Java LinkedHashMap 有序
- 微信或企业微信实现扫码登录的三种方式