Shell脚本学习指南(四)——文本处理工具
2016-05-15 18:47
561 查看
grep
字符串查找,默认用BREgrep [options] ‘string’ filename
-E 使用ERE
-a 以文本文件方式搜索
-c 计算找到的符合行的次数
-i 忽略大小写
-n 顺便输出行号
-v 反向选择,即显示不包含匹配文本的所有行
-h 查询多文件时不显示文件名
-l 查询多文件时只输出包含匹配字符的文件名
-s 不显示不存在或无匹配文本的错误信息
grep -c "abc" test.txt #统计含有abc的行数 grep -i "May" test.txt #查找含有May的行,不区分大小写 grep -n "abc" test.txt #查找含有abc的行,输出时加上行号 grep -v "abc" test.txt #查找不含有May的行 grep "a\{3,\}" test.txt #查找至少重复出现3个a的行 grep "a\{3,7\}" test.txt #查找重复出现3-7个a的行
tr
字符转换-c:取反
-d:删除
-s:把连续重复的字符以单独一个字符表示
# 将文件file中出现的"abc"替换为"xyz" cat file | tr "abc" "xyz" > new_file # 使用tr命令“统一”字母大小写 cat file | tr [a-z] [A-Z] > new_file cat file | tr [A-Z] [a-z] > new_file # 把文件中的数字0-9替换为a-j cat file | tr [0-9] [a-j] > new_file # 删除文件file中出现的"Snail"字符 cat file | tr -d "Snail" > new_file 【注意】这里,凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的"Snail”字符串 # 删除文件file中出现的换行'\n'、制表'\t'字符,不可见字符都得用转义字符来表示 cat file | tr -d "\n\t" > new_file # 删除“连续着的”重复字母,只保留第一个 cat file | tr -s [a-zA-Z] > new_file # 删除空行 cat file | tr -s "\n" > new_file # 删除Windows文件“造成”的'^M'字符 cat file | tr -d "\r" > new_file cat file | tr -s "\r" "\n" > new_file 【注意】这里-s后面是两个参数"\r"和"\n",用后者替换前者 # 用空格符\040替换制表符\011 cat file | tr -s "\011" "\040" > new_file # 把路径变量中的冒号":",替换成换行符"\n" echo $PATH | tr -s ":" "\n"
cut
从输入中截取选定的部分-d 指定分隔符
-f 指定字段
-c 指定字符
cut -d: -f1,7 /etc/passwd #以:为分隔符,打印/etc/passwd的第1、第5字段 who | cut -c 1-16,26-38 #打印/etc/passwd的第10-25字符
join
基于共同的键值,合并记录-1 filed1 -2 filed2 指明要结合的字段
-t 指定分隔符
1.txt: aaa 1 2 3 4 bbb 1 2 3 4 xxx 1 2 3 4 ccc 1 2 3 4 ddd 1 2 3 4 ooo 1 2 3 4 2.txt: aaa a b c d bbb a b c d zzz a b c d ccc a b c d ddd a b c d yyy a b c d join 1.txt 2.txt: aaa 1 2 3 4 a b c d bbb 1 2 3 4 a b c d join -o 1.1 -o 1.2 -o 2.4 1.txt 2.txt aaa 1 c bbb 1 c
sort
将输入的文本排序-b:忽略开头的空白
-c:检查输入是否已经排序
-d:字典顺序,仅文字、数字和空白有意义
-g:浮点值排序
-f:忽略大小写
-i:忽略无法打印的字符
-k:定义排序键值
-m:将已排序的输入文件,合并为一个排序后的输出数据流
-n:整数排序
-o:指定输出文件
-r:逆序排序
-t:指定分隔符
-u:只保留唯一的记录
sort -t: -k2 /etc/passwd #以:为分隔符,从第2个字段开始,到记录的结尾排序 sort -t: -k2,2 /etc/passwd #以:为分隔符,从第2个字段开始,到第2个字段的结尾排序 sort -t: -k2,5 /etc/passwd #以:为分隔符,从第2个字段开始,到第5个字段的结尾排序 sort -t: -k2.4,5.6 /etc/passwd #以:为分隔符,从第2个字段的第4个字符开始,到第5个字段的第6个字符排序 sort -t: -k3n,3 /etc/passwd #以:为分隔符,以第3个字段的整数值排序 sort -t: -k3nr,3 /etc/passwd #以:为分隔符,以第3个字段的整数值的逆序排序 sort -t: -k3n -k4n /etc/passwd #以:为分隔符,先以第3个字段的整数值的逆序排序,在结果中对第4个字段排序 sort -t: -k3n,3 -u /etc/passwd #以:为分隔符,以第3个字段的整数值排序,在结果中只保留第一条
uniq
数据过滤-c:在每行前加上重复次数
-d:仅显示重复的行
-u:仅显示不重复的行
fmt
重新格式化段落-s:仅切割较长的行
-w n:设置输出宽度
wc
字数统计工具-l:行数
-c:字节数
-w:字数
head
显示行首-n
tail
显示行尾-n
-f:每隔1秒显示文件的行尾,看日志文件时很有用;此选项不可用于脚本
dd
od
file
strings
pr
文本处理命令
trgrep
cut
join
sort
wc
pr
head
tail
od
dd
file
strings
相关文章推荐
- Shell脚本学习指南(三)——正则表达式
- Shell脚本输出斐波拉契数列前十项,每行显示两个数
- Shell 脚本中如何使用make命令
- 让你提升命令行效率的 Bash 快捷键 [完整版]
- powershell remote on computer
- XShell提示Connection closed by foreign host的问题 和 路由器分配IP的规则
- shell脚本实现多线程
- LINUX SHELL控制结构
- 第三十六课 Spark之TaskScheduler Spark shell案例运行日志详解、TaskScheduler和SchedulerBackend、FIFO与FAIR、Task运行时本地性算法详
- shell启动程序脚本
- python调用shell小技巧
- UBUNTU实战(5)
- Linux Bash终端快捷键小结
- Linux汇编和Shellcoding-1 汇编语言简介
- Linux Bash终端支持中文显示
- shell脚本学习02-第一章小结
- shell脚本学习01
- 批量修改文件名的脚本bat\python\shell
- 【Linux】Shell三类变量的作用域——linux shell “永久环境变量”、“临时环境变量”和"普通变量"之完全解读
- Shell脚本的一些参数