Linux命令简单操作

一、 awk

命令格式:

    awk ‘BEGIN{commands} pattern {commands} END{commands}’file

工作方式:

    1.执行BEGIN{commands}语句块中语句,可选的语句块

    2.从文件或者stdin中读取一行,然后执行{commands},重复这个过程,直到文件全部被读取完

    3.当读至输入流末尾是,执行END{commands}语句块

特殊变量:

    FILENAME:awk浏览的文件名

    NR:记录数量,执行过程中对应于当前行号

    NF:字段数量,执行过程中对应于当前行的字段数

    FS:设置分隔符,命令行 -F

    $0:执行过程中当前行的文本内容

    $1:第一个字段的文本内容

    $2:第二个字段的文本内容,以此类推

print&printf打印输出的函数

  print的参数是以逗号进行分隔时,参数打印时则以空格作为定界符,awk的print语句中,双引号是被当做拼接操作符使用的  

  printf函数,其用法和c语言中printf基本相似,可以格式化字符串,输出复杂时,printf更加好用,代码更易懂。

流程控制语句

  if(condition)else{}

  while(){}

  do{}while()

  for(;;)等 

内建字符串控制函数:

    1.length(string):返回字符串的长度

    2.index(string,search_string):返回search_string在字符串中出现的位置

    3.substr(string,start_pos,end-pos):在字符串中从start-pos开始到end-pos位置,生成子串

   4.split(string,array,delimiter):用delimiter生成一个字符串列表,并将该列表存入数组,delimiter默认使用当前FS值。

   5.sub(regex,replace_str,string):将正则表达式匹配到的第一处内容替换成replace_str

   6.gsub(regex,replace_str,string):替换正则表达式匹配到所有的内容

   7.match(regex,string):检测正则表达式是否能够匹配字符串

应用:

  1.从文件或者stdin中读取一行,循环执行{commands},直到读完

  echo "aXbX cXdXe a;b;cX d;e" | awk -F"[X|;| ]+" 'BEGIN{print "begin:"} {for(i=1;i<=NF;++i){++S[$i];printf("$%d=%s\n",i,$i)}} END {print "end:"; for(i in S) print i, S[i]}'

  2.split函数

  

二、sed

sed语法格式:

  sed[options ]‘command’ file(s)

sed常用选项:

    -n:只有经过sed 特殊处理的那一行(或者动作)才会被列出来

  -e:组合多个sed命令

  -f:执行 filename 内的sed 动作

  -r:sed 的动作支援的是延伸型正规表示法的语法

  -i:直接修改读取的文件内容,而不是屏幕输出

sed常用命令:

  a:追加  sed ‘a xxx’ file 每一行后面都追加xxxx    sed‘$a xxx’file 最后一行追加

  i:插入  sed ‘i xxx’file 每一行前面插入xxx  

  c:取代  sed ‘2c xxx’file 第二行用xxx取代

  d:删除  sed ‘/^$/d’file  删除空白行   sed ‘1,5d’file 删除第1-5行

  s:替换  sed ‘s/pattern/replace_str/g’file   /g意味sed会替换每一处匹配,否则是第一处匹配

  &:标记匹配样式的字符串,可以在替换字符串时使用已匹配的内容

  \1 or \2:第1个or第2个匹配的字符串

应用:

  1.&:标记匹配样式的字符串,可以在替换字符串时使用已匹配的内容

  2.\1 or \2:第1个or第2个匹配的字符串,\(pattern\)用于匹配子串,模式被包括在使用斜线转义过的()中

  3.使用管道组合多个sed命令

  sed  ‘expression’ | sed ‘expression’

  sed ‘expression;expressiong’

  sed -e ‘expression’ -e ‘expression’

三、tr---translate转换

tr语法格式:

  tr [options] set1 set2 

  原理:通过集合映射的概念,将set1映射成set2

-常用参数

  -d:指定需要被删除的字符集合

-c:使用集合的补集

  tr –c set1 set2  使用set1的补集,即不包含set1的所有字符

 

-s:压缩输入中重复的字符,将连续重复的字符合并为一个字符

应用:

1.加密解密 

2.数字文件相加

  将文件中的\n转换成+,利用$[ operation ]执行算术运算

3.tr集合列表

  tr [:class:]  [:class:]

   alnum:字母和数字    alpha:字母

  digit:数字  cntrl:控制(非打印)字符

  lower:小写字母  upper:大写字母

  graph:图形字符  punct:标点符号

  space:空白字符  xdigit:十六进制字符

四、find

find:沿着文件层次结构向下遍历,匹配符合条件的文件,执行相应操作

常用参数

  -print:打印出批判文件的文件名(路径),\n是输出文件的分割符

  -print0:\0(null)作为输出文件的分割符,xargs -0

  -name:文件名必需匹配的字符串,\(-name“xx”-o -name“xx”\) 匹配多个字符串

  -iname:忽略字母大小写

  -path:匹配文件路径

  -type:文件类型过滤

  -size:文件大小搜索

  -delete:删除查找到的文件

  -perm:匹配具有特定权限值的文件

  -newer:指定一个用于比较时间戳的参考文件,匹配出参考文件更新的所有文件

  -user:制定某用户文件

  -exec:借助-exec与其他命令进行结合,命令格式为:command {} \; 注意{}和\之间的空格

  -ok:和-exec的作用相同,只是在安全模式下进行操作,按y键yes,按n键no

  -atime:访问时间,用户最近一次访问文件的时间,单位:天  -amin 单位:分

  -mtime:修改时间,文件内容最后一次被修改的时间,单位:天 –mmin 单位:分

  -ctime:文件(例如权限或所有权)最后一次改变的时间,单位:天 –cmin单位:分

   -表示小于(最近) +表示大于(超过) 没有- 或+ 表示数字当天

  !:表示不匹配规则的文件 

应用:

  1.-exec:借助-exec与其他命令进行结合,命令格式为:command {} \; 注意{}和\之间的空格

五、xargs

xargs:构造命令行参数并运行命令

同管道的区别

   管道是实现将前面的标准输出作为后面的标准输入

    xargs是实现将标准输入作为命令的参数

   xargs的默认命令是echo,默认定界符是空格(空白字符)

    这意味着传递给xargs的输入如果包含换行和空白字符,通过xargs的处理,换行和空白将被空格取代,因此xargs是构建单行命令的重要组件之一

 常用参数

  -n number :多行输出,多个参数

  -d X:自定义定界符

  -I | -i replace_str:在xargs扩展时replace_str会被替换为从标准输入的每一行参数

  -L number :标准输入读取非空number行作为参数,-L 1 等价于-I

  -p:询问是否运行

  -t:启用跟踪方式

  -s size:设置命令行的最大字节数

  -x:如果有任何 命令行大于 -s Size 标志指定的字节数,停止运行 xargs 命令

应用:

  1.-n number:设置命令的参数个数

2.-I replace_str:命令参数替换

3.xargs和find算是一对死党

find的-print0和xargs的-0

ps:只要是把find的输出结果作为xargs的输入,就必须将-print0与find结合使用,以字符null(\0)来分割,同时,xargs -0将null作为定界符

 

 

 

posted @ 2017-05-16 23:28  波妞妈  阅读(161)  评论(0编辑  收藏  举报