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. mysql时间字符串按年/月/天/时分组查询 -- date_format

    SELECT DATE_FORMAT( deteline, "%Y-%m-%d %H" ) , COUNT( * ) FROM test GROUP BY DATE_FORMAT( ...

  2. java面试⑥框架部分

    2.5.1 什么是框架: 2.5.2 MVC模式 2.5.3 MVC框架 2.5.4 简单讲一下struts2的执行流程 2.5.5 Struts2中的拦截器,你都用它干什么? 2.5.6 简单讲一下 ...

  3. Python描述符(__get__,__set__,__delete__)简介

    先说定义,这里直接翻译官方英文文档: 一般来说,描述符是具有“绑定行为”的对象属性,该对象的属性访问将会被描述符协议中的方法覆盖.这些方法是__get__(),__set__(),和__delete_ ...

  4. 高云的jQuery源码分析笔记

    (function( window, undefined ) { // 构造jQuery对象 var jQuery = function( selector, context ) { return n ...

  5. T24银行核心业务系统

    T24银行核心业务系统 http://www.pianshen.com/search http://www.pianshen.com/article/8248107255/

  6. 本地启动activemq,报错解决

    本地启动activemq时,报错.可以看到是5672端口被占用.在网上查了各种资料,有说是杀掉进程的,有说是禁用Internet Connection Sharing (ICS)服务的,楼主试了都没生 ...

  7. emberjs 按年月分组

    一个集合,里面有年和月的属性,按照年和月进行分组显示数据 + item.TopicMonth }).map(function (value, key) { return { time: { year: ...

  8. 使用pd从数据库逆向生成pdm文件

    使用pd从数据库逆向生成pdm文件 好久没更新博客了,最近忙着各种事,捞了点老本行java的一些东西,浑浑噩噩,花了几天时间用java搭建了一个小项目的restful接口,深深觉得这东西论效率被nod ...

  9. JS 重写alert,使之能输出多个参数

    windows._alert = windows.alert; windows.alert = function(){ _alert = (Array.prototype.slice(argument ...

  10. javax.naming.NamingException: Cannot create resource instance报错修改

    //下面内容为网上获取 avax.naming.NamingException: Cannot create resource instance at org.apache.naming.factor ...