Linux Shell 编程 第二部分 chapter7-12

文本过滤

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时只能使用单字符或者字符串范围。   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值