linux系统比较常用的AWK与SED命令,这两个命令主要是格式化文本文件信息。接下来将详细介绍这两个命令的基本用法以及可以实现的功能。

 一、AWK命令

  AWK语言的基本功能是在文件或者字符串中基于指定规则浏览和抽取信息。awk抽取信息后,才能对其他文本操作。完整awk脚本通常用来格式化文本文件信息。

  

 1、内置变量

   $0: 当前记录(作为单个变量)
   $1~$n: 当前记录的第n个字段,字段间由FS分隔
   FS: 输入字段分隔符 默认是空格
   NF: 当前记录中的字段个数,就是有多少列
   NR: 已经读出的记录数,就是行号,从1开始
   FNR: 当前记录数
   RS:   输入的记录他隔符 默认为换行符
   OFS: 输出字段分隔符  默认也是空格
   ORS: 输出的记录分隔符,默认为换行符
   ARGC: 命令行参数个数
   ARGV: 命令行参数数组
   FILENAME: 当前输入文件的名字
   IGNORECASE: 如果为真,则进行忽略大小写的匹配
   ARGIND: 当前被处理文件的ARGV标志符
   CONVFMT: 数字转换格式 %.6g
   ENVIRON: UNIX环境变量
   ERRNO: UNIX系统错误消息
   FIELDWIDTHS: 输入字段宽度的空白分隔字符串
   OFMT: 数字的输出格式 %.6g
   RSTART: 被匹配函数匹配的字符串首
   RLENGTH: 被匹配函数匹配的字符串长度
   SUBSEP: 数组分隔符。将(I,J)转换为 I SUBSEP J, 模拟多维数组用

2、 内置字符串函数

  1)gsub(Ere,Repl,[ In ])

    除了正则表达式所有具体值被替代这点,它和 sub 函数完全一样地执行。

  2)sub( Ere,Repl,[ In ])

   用 Repl 参数指定的字符串替换 In 参数指定的字符串中的由 Ere 参数指定的扩展正则表达式的第一个具体值。sub 函数返回替换的数量。出现在 Repl 参数指定的字符串中的 &(和符号)由 In 参数指定的与 Ere 参数的指定的扩展正则表达式匹配的字符串替换。如果未指定 In 参数,缺省值是整个记录($0 记录变量)。

  3)index(String1,String2)

   在由 String1 参数指定的字符串(其中有出现 String2 指定的参数)中,返回位置,从1 开始编号。如果String2 参数不在 String1 参数中出现,则返回0(零)。

  4)length [(String)]
     返回String参数指定的字符串的长度(字符形式)。如果未给出 String 参数,则返回整个记录的长度($0 记录变量)。
  5)blength[(String)]
   返回 String 参数指定的字符串的长度(以字节为单位)。如果未给出 String 参数,则返回整个记录的长度($0 记录变量)。
  6)substr(String,M,[N])
   返回具有N参数指定的字符数量子串。子串从String参数指定的字符串取得,其字符以M参数指定的位置开始。M参数指定为将String参数中的第一个字符作为编号1。如果未指定N参数,则子串的长度将是M参数指定的位置到String参数的末尾 的长度。

  7)split(String,A,[Ere]) 
   将 String 参数指定的参数分割为数组元素A[1],A[2],...,A[n],并返回n变量的值。此分隔可以通过Ere参数指定的扩展正则表达式进行,或用当前字段分隔符(FS 特殊变量)来进行(如果没有给出 Ere 参数)。除非上下文指明特定的元素还应具有一个数字值,否则 A 数组中的元素用字符串值来创建。
  8)tolower(String) 
   返回String参数指定的字符串,字符串中每个大写字符将更改为小写。大写和小写的映射由当前语言环境的LC_CTYPE范畴定义。
  9)toupper(String) 
   返回String参数指定的字符串,字符串中每个小写字符将更改为大写。大写和小写的映射由当前语言环境的LC_CTYPE范畴定义。

 3、时间函数

  1)mktime(YYYYMMDDHHMMSS[DST])

    生成时间格式
  2)strftime([format [,timestamp]])

    格式化时间输出,将时间戳转为时间字符串
  3)systime()

    得到时间戳,返回从1970年1月1日开始到当前时间(不计闰年)的整秒数

 二、SED命令

  SED是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。

  Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

  调用sed命令有两种形式: 
   (1)sed [options] 'command' file(s) 
   (2)sed [options] -f scriptfile file(s)

  1、元字符集

  ^
  锚定行的开始 如:/^sed/匹配所有以sed开头的行。  
  $
  锚定行的结束 如:/sed$/匹配所有以sed结尾的行。  
  .
  匹配一个非换行符的字符 如:/s.d/匹配s后接一个任意字符,然后是d。  
  *
  匹配零或多个字符 如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。 
  []
  匹配一个指定范围内的字符,如/[Ss]ed/匹配sed和Sed。 
  [^]
  匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。 
  \(..\)
  保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。 
  &
  保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。  
  \<
  锚定单词的开始,如:/\<love/匹配包含以love开头的单词的行。  
  \>
  锚定单词的结束,如/love\>/匹配包含以love结尾的单词的行。  
  x\{m\}
  重复字符x,m次,如:/0\{5\}/匹配包含5个o的行。  
  x\{m,\}
  重复字符x,至少m次,如:/o\{5,\}/匹配至少有5个o的行。  
  x\{m,n\}

  重复字符x,至少m次,不多于n次,如:/o\{5,10\}/匹配5--10个o的行。

  

AWK与SED命令的更多相关文章

  1. linux中cut、printf、awk、sed命令

    cut.printf.awk.sed在linux中都是用来处理文本的命令,接下来一个一个看. 一.cut命令 cut [选项] 文件名 选项: 主要使用一下两个参数,若是只使用 -f 则默认的分割符为 ...

  2. 处理海量数据的grep、cut、awk、sed 命令

    grep.cut.awk.sed 常常应用在查找日志.数据.输出结果等等,并对我们想要的数据进行提取. 通常grep,sed命令是对行进行提取,cut跟awk是对列进行提取 处理海量数据之grep命令 ...

  3. awk与sed命令面试题整理

    1.sed命令123abc456456def123567abc789789def567要求输出:456ABC123123DEF456789ABC567567DEF789答案:sed -r -i 's# ...

  4. awk和sed命令

    awk awk是一个强大的编辑工具,可以在无交互的情况下实现相当复杂的文本操作 awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 a ...

  5. linux之awk、sed命令

    总结: 两个命令的正则表达式都用''单引号进行区分. 输出变量名用单引号,输出变量值用双引号,这个在bash脚本里一般是通用的. 在bash脚本里要使用变量值,都要加上双引号 awk用法: 参考网址: ...

  6. 【Shell】shell截取字符串方式(cut、awk、sed命令)

    1.cut -b :以字节为单位进行分割.这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志.-c :以字符为单位进行分割. -d:自定义分隔符,默认为制表符. -f:与-d一起使用,指定显示 ...

  7. Linux学习--第十一天--source、环境变量目录、欢迎信息、正则、cut、awk、sed、sort、判断表达式、if、for、case、一些脚本

    source source /root/.bashrc #让修改后的配置文件在不重启系统的情况下生效.source等同于. 环境变量目录 /etc/profile /etc/profile.d/*.s ...

  8. Linux字符串截取和处理命令 cut、printf、awk、sed、sort、wc

    1. cut [选项] 文件名 -f  列号 #提取第几列(分隔符默认为\t) -d  分隔符 #指定分隔符 例如:cut -f 2 a.txt #截取文件a.txt内容的第二列(列号从1开始) cu ...

  9. grep,awk和sed的常用命令和语法

    Grep的常用命令语法 1. 双引号引用和单引号引用在g r e p命令中输入字符串参数时,最好将其用双引号括起来.例如:“m y s t r i n g”.这样做有两个原因,一是以防被误解为 s h ...

随机推荐

  1. Jmeter参数化与检查点

    一.Jmeter参数话有3种方法: 1. add->pre processors->user parameter(用户参数) 2.add->config Element->CS ...

  2. 我与GitHub的第一次——自制音乐文件修改器

    背景: 随机播放,所有的音乐播放器里面现在几乎都有这个功能吧.但是有没有发现,自己的播放器在选择随机播放的时候,经常会听到重复顺序的歌曲呢?反正我是有这样的感觉,无耐自己平时下的歌曲都是“歌手名—歌曲 ...

  3. mysql 导出数据到csv文件的命令

    1.导出本地数据库数据到本地文件 mysql -A service_db -h your_host -utest -ptest mysql> select * from t_apps where ...

  4. WPF根据ScrollViewer的滚动条出现与否来设置触发器Trigger

    先看一段代码 <Style.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource ...

  5. mysql查看权限的命令

    mysql查看用户权限的命令 1.这里用来查看用户存储过程: show grants for 用户; eg: show grants for root@'localhost';#这样就会把root用户 ...

  6. SharePoint2013使用资源管理器打开失败

    我们在使用sharepoint 2013的文档库或者资源库的时候,经常会需要用到使用“资源管理器”来管理文档,但是有时候,点击“使用资源管理器打开”,会提示如下错误: 在文件资源管理器中打开此位置时遇 ...

  7. gocommand:一个跨平台的golang命令行执行package

    最近在做一个项目的时候,需要使用golang来调用操作系统中的命令行,来执行shell命令或者直接调用第三方程序,这其中自然就用到了golang自带的exec.Command. 但是如果直接使用原生e ...

  8. [Codeforces 932E]Team Work

    Description 题库链接 求 \[\sum_{i=1}^n C(n,i)\times i^k\] \(1\leq n\leq 10^9, 1\leq k\leq 5000\) Solution ...

  9. 在Eclipse中,用XFire发布web服务

    配置及相关说明见http://www.cnblogs.com/xshy3412/archive/2007/09/29/910848.html 仅确定发布xfire需要的最基本的jar activati ...

  10. [硬件知识]OP(Over-provisioning)预留空间

    SSD上的OP指的是用户不可操作的容量,大小为实际容量减去用户可用容量,OP区域一般被用于优化操作如:WL,GC和坏块映射等. OP一般分三层(见下图).第一层容量固定为SSD标称容量的7.37%,这 ...