xiyou 发表于 2018-8-30 06:21:46

shell中的grep,awk,sort,cut,sed

  此处命名为正则表达式可能不太恰当,大都是一些可能是shell脚本中用到的命令,暂时这样称呼,当然这些命令确实和正则表达式关系密切。
  1.grep
  grep -n '^a’ filename   #-n 打印所过滤出行的行号过滤以某字符为开头的行
  grep -n '^' filename过滤以小写字母为开的行
  grep'^$' filename打印为空行的行号
  grep-n '\.$' 打印以小数点为结尾的行
  ps:    $代表结尾
  ^代表开头
  grep -v '^$'filename打印不为空的行
  -v反义,意为不包含某参数的行
  grep -v 'set' filename 打印文件中不包含set的行
  grep 常用参数:
  -c 只输出匹配行的计数
  -i 不区分大小写(只适用于单字符)
  -n 显示匹配行及行号
  -s 不显示不存在或无匹配文本的错误信息
  -v 显示不包含匹配文本的所有行
  2.sed
  sed 'n1,n2 d'
  sed-i s/a/b/gfilename   替换后并写入源文件
  3.awk是个非常牛逼的程序
  awk 命令1,命令2,命令3
  awk '{print NR,NF,$1,$NF,}' file 显示文件file的当前记录号、域数和每一行的第一个和最后一个域。
  FS 分隔符
  NR 当前为第几行
  FN 当前有几个字段
  awk 默认的分隔符是一个空格
  4.last 这个月的登陆信息
  5.cut
  -d -f结合作用,-d后接分隔符,-f后接数字。意为打印出以-d(后接内容)为分隔符分隔成的第几部分
  如: cut -d '_' -f 3    string_line即为打印出以_为分隔符的第3部分,若没有第三部分则打印出为空
  -c 以字符为单位取出固定范围的字符
  cut -c20-25    即取出这一行第20到第25个字符
  6.uniq
  过滤重复内容
  uniq -c 在列边显示该行出现的次数
  7.sort (排序)
  -f 忽略大小写
  -b 忽略空格
  -r 反向排序
  -u 滤重
  -t 分隔符,默认为tab
  -k 按哪个字段来排序
  8.split-bl prefix(文件名头)
  -b 按大小拆分 后接文件太小 ( 400b/400K/400m等)
  -l 按行拆分
  9.print
  PS:以上命令可通过管道连接使用,以完成一些文本的处理

页: [1]
查看完整版本: shell中的grep,awk,sort,cut,sed