文本过滤
7. 正则表达式
^ 匹配行首
$ 匹配行尾
* 一个单字符后紧跟一个*,匹配一个或多个该字符
[] 匹配[]中的字符
/ 使一些特殊字符失去原来的意义
. 匹配任意单字符
pattern /{n,/} 匹配某种字符出现n次的模式,
pattern /{n/}m 匹配某种字符出现至少n次的模式,
pattern /{n,m/} 匹配某种字符出现n-m次之间的模式,
8、grep 家族(全局正则表达式,允许对文本文件进行查找)
grep -options “searching_string” path
选项:
-c 只输出匹配行的计数
-i 不区分大小写
-h 查询多文件时不显示多文件
-l 查询多文件时只输出匹配文件名
-n 显示匹配行和行号
-s 不显示不匹配或无文本的错误信息
-v 显示不匹配的文件行和信息
-E 扩展选项
9.awk 格式化报文或者从文本文件中抽取匹配的数据包,抽取合适的记录信息
程序的命令执行: awk [-F -field-seperator] 'command' input-files
其中: [-F -field-seperator] 为域分割符,默认是空格键,如果要使用':'为分割符,则必须为:-F:
command 用单引号扩起
awk执行时,其浏览域被标记为:$1, $2, $3, ..., $n
$0标示所有域
例如:$awk -F: '{ print $1 }' /etc/passwd
$awk -F: '{ print $1"/t"$4 }' /etc/passwd
条件操作符: < 小于 <= 小于等于
== 等于 > 大于 >= 大于等于
!= 不等于 ~ 匹配正则表达式 !~ 不匹配正则表达式
例如:$ awk -F: '{ if( $1 !~"jason") print $1 }' /etc/passwd
awk工具包括的一些内部函数: printf printf("%s/n",$0);
10. sed 非交互性文本编辑器,
命令行格式 sed -option 'command' file
sed 定位文本文件内容的方式
x 行号;
x,y 从x行到y行范围
/pattern/ 查询包含该模式的行
x,y! 查询不包含指定行号为x,y的行
编辑命令:
p 打印匹配行
= 显示文件行号
a/ 定位行号后附加新信息
i/ 定位行号后添加新信息
d 删除定位行
c/ 新文本替换旧文本
11. 合并与分割
命令: sort -option file 文本内容排序
-c 是否分类: $ sort -c /etc/passwd
-t 确定域分割符:$sort -c -t: /etc/passwd
-u 去除重复行: $sort -u -t: /etc/passwd
-r 倒序
-m 排序后与文件合并 $sort -m -t: /etc/passwd temp.out
命令: uniq 去除或禁止重复行
unip -option file
-u 只显示不重复行
-c 打印每一重复行出现的次数
-d 只显示有重复行的数据,显示一次
使用head 显示首行开始的特定行数,如: sort -t: +1 /etc/passwd | head -10
使用tail 显示行尾开始的特定行数,如: sort -t: +1 /etc/passwd | tail -10
命令:join 链接两个文件
join -option file1 file2
-an n为数字,1或者2,分别代表文件1或者文件2,用于显示不匹配行
-o n.m n代表文件,m代表文件的域,每个n.m之间必须用逗号,隔开
命令:cut 剪切文件内容
cut -option file1 file2
-c 指定剪切数
-f 指定剪切域
-d 指定与tab或空格不相符的域分割符
命令:paste 拷贝复制文件内容
paste -d -s file1 file2
-d 指定与tab或空格不相符的域分割符
-s 将每个文件合并成行而非按行粘贴
命令:split 文件大小的分割
split -n file 按多少行进行分割
12、tr用法 通过替换或删除操作进行字符转换
用法:$tr -c -d -s "string1" "string2" file
-c 用字符串string1的补集替换此字符集;
-d 删除字符串1中所有输入字符
-s 删除所有重复出现的字符序列
指定字符串1或2时只能使用单字符或者字符串范围。