Shell脚本学习指南(四)——文本处理工具
来源:互联网 发布:2月进出口数据 编辑:程序博客网 时间:2024/05/28 05:15
grep
- 字符串查找,默认用BRE
- grep [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_filecat file | tr [A-Z] [a-z] > new_file# 把文件中的数字0-9替换为a-jcat 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_filecat file | tr -s "\r" "\n" > new_file【注意】这里-s后面是两个参数"\r"和"\n",用后者替换前者# 用空格符\040替换制表符\011cat 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 4bbb 1 2 3 4xxx 1 2 3 4ccc 1 2 3 4ddd 1 2 3 4ooo 1 2 3 42.txt:aaa a b c dbbb a b c dzzz a b c dccc a b c dddd a b c dyyy a b c djoin 1.txt 2.txt:aaa 1 2 3 4 a b c dbbb 1 2 3 4 a b c djoin -o 1.1 -o 1.2 -o 2.4 1.txt 2.txtaaa 1 cbbb 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
文本处理命令
- tr
- grep
- cut
- join
- sort
- wc
- pr
- head
- tail
- od
- dd
- file
- strings
0 0
- Shell脚本学习指南(四)——文本处理工具
- 《shell脚本学习指南》----文本处理
- 《Shell脚本学习指南》第四章 文本处理工具
- shell脚本三大文本处理工具
- SHELL脚本学习指南——背景知识
- Shell脚本学习指南(一)——基本概念
- shell脚本编程四 ——shell字符串处理
- shell-文本处理工具
- Shell文本处理工具
- Linux Shell 脚本应用——awk文本处理文件
- shell脚本学习指南-grep文本搜索命令-学习(3)
- shell脚本学习指南之文本排序与排重等
- 《shell脚本学习指南》自学笔记——入门
- Shell脚本学习指南(二)——变量、条件、循环
- Shell脚本学习指南(三)——正则表达式
- Shell脚本学习指南——Chapter 2 初识
- 自学笔记——shell(文本处理工具)
- [shell脚本]逐行处理文本
- 高德地图组件在Android的应用以及Android与JavaScript的交互(一)
- java中接口类似c++中纯虚函数
- 各种排序算法的比较——一步一步算法篇
- Retrofit的简单使用
- CentOS 7 java服务器搭建
- Shell脚本学习指南(四)——文本处理工具
- 二分查找理解学习
- java 对称加密算法
- JSP的动作元素
- Tomcat安装及配置
- iOS开发系列--UITableView全面解析
- HZAU校赛F题 LCS (dp)
- 关于javascript的闭包、模块化以及单例模式
- 验证身份证号的合法性