awk默认从STDIN接受数据,打印文本到STDOUT。

awk的默认输入和输出分隔符:

FS : 输入字段分隔符,默认空格。

RS : 输入行分隔符,默认\n。

OFS : 输出字段分隔符,默认空格。

ORS : 输出行分隔符,默认\n。

实例:通过改变默认的内置变量使多行变成一行

file.txt  ( 每个人的信息条数不确定,区分是一个空行 )

路人甲

电话:13777707771

手机:010-12345678

路人乙

电话:13912344321

手机:010-56784321

QQ: 87654221

想要把格式变为:

路人甲  电话:13777707771  手机:010-12345678

路人乙  电话:13912344321  手机:010-56784321  QQ: 87654221

先给出最终命令,再看分析。

awk 'BEGIN{FS="\n";RS="";ORS=""}{for(x=1;x<=NF;x++){print $x"\t"} print "\n"}' ./t.txt

分析:

改变FS为\n,这样读入域就是一行,再改变RS为"",这样就会把一个人的信息读入为一行。现在就是两行数据了。下一步就是输出。

因为默认的OFS就是空格,ORS就是\n,这就是我们想要的,所以

awk 'BEGIN{FS="\n";RS=""}{print $1,$2,$3,$4}' ./t.txt

输出的结果为:

路人甲  电话:13777707771  手机:010-12345678

路人乙  电话:13912344321  手机:010-56784321  QQ: 87654221

这就是我们想要的结果,但是从$1输出到$4不是个好主意,假设一个人最多的记录不止4行呢。

这时我想直接print $0不就行了,和 print $1,$2,$3,$4不是一样的,可结果却是:

awk 'BEGIN{FS="\n";RS=""}{print $0}' ./t.txt

路人甲
电话:13777707771
手机:010-12345678
路人乙
电话:13912344321
手机:010-56784321
QQ: 87654221

和想要的结果有些差别呢,为什么呢?因为OFS在输出$0时不起作用,OFS只用在输出多个域时会插入到每个域之间。

这时我想那就用for循环把每行的每个域print出来好了。于是

awk 'BEGIN{FS="\n";RS=""}{for(x=1;x<=NF;x++){print $x}}' ./t.txt

路人甲
电话:13777707771
手机:010-12345678
路人乙
电话:13912344321
手机:010-56784321
QQ: 87654221

结果好像没什么变化,因为for循环的每个print之后会输出一个ORS,可以指定一个可见的ORS试试看就知道了。

所以需要把ORS指定为"",手动输出换行符。这个就是最开始的命令了。

AWK改变输入输出分隔符实例分析的更多相关文章

  1. Camera图像处理原理及实例分析-重要图像概念

    Camera图像处理原理及实例分析 作者:刘旭晖  colorant@163.com  转载请注明出处 BLOG:http://blog.csdn.net/colorant/ 主页:http://rg ...

  2. 一些有用的javascript实例分析(二)

    原文:一些有用的javascript实例分析(二) 5 求出数组中所有数字的和 window.onload = function () { var oBtn = document.getElement ...

  3. Awk使用及站点日志分析

    Awk使用及站点日志分析 Awk简单介绍 概述 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入, ...

  4. Camera图像处理原理及实例分析

    Camera图像处理原理及实例分析 作者:刘旭晖  colorant@163.com  转载请注明出处 BLOG:http://blog.csdn.net/colorant/ 主页:http://rg ...

  5. sql注入实例分析

    什么是SQL注入攻击?引用百度百科的解释: sql注入_百度百科: 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具 ...

  6. Linux I2C设备驱动编写(三)-实例分析AM3359

    TI-AM3359 I2C适配器实例分析 I2C Spec简述 特性: 兼容飞利浦I2C 2.1版本规格 支持标准模式(100K bits/s)和快速模式(400K bits/s) 多路接收.发送模式 ...

  7. 【转】Linux I2C设备驱动编写(三)-实例分析AM3359

    原文网址:http://www.cnblogs.com/biglucky/p/4059586.html TI-AM3359 I2C适配器实例分析 I2C Spec简述 特性: 兼容飞利浦I2C 2.1 ...

  8. 一些有用的javascript实例分析(三)

    原文:一些有用的javascript实例分析(三) 10 输入两个数字,比较大小 window.onload = function () { var aInput = document.getElem ...

  9. 一些有用的javascript实例分析(一)

    原文:一些有用的javascript实例分析(一) 本文以http://fgm.cc/learn/链接的实例索引为基础,可参见其实际效果.分析和整理了一些有用的javascript实例,相信对一些初学 ...

随机推荐

  1. 如何在iOS9的plist文件中配置不使用https

    App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Te ...

  2. JEECMS中返回列表跳转的几种方式

    1.返回的不是当前类 <span class="tools pull-right"> <button class="btn btn-info" ...

  3. BZOJ 4551: [Tjoi2016&Heoi2016]树

    4551: [Tjoi2016&Heoi2016]树 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 748  Solved: 394[Subm ...

  4. Leetcode 77, Combinations

    Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For exampl ...

  5. SQLite Learning、SQL Query Optimization In Multiple Rule

    catalog . SQLite简介 . Sqlite安装 . SQLite Programing . SQLite statements 1. SQLite简介 SQLite是一款轻型的数据库,是遵 ...

  6. 加州大学伯克利分校Stat2.2x Probability 概率初步学习笔记: Section 2 Random sampling with and without replacement

    Stat2.2x Probability(概率)课程由加州大学伯克利分校(University of California, Berkeley)于2014年在edX平台讲授. PDF笔记下载(Acad ...

  7. WINDBUG常用命令

    配置: File->Symbol path-> SRV*C:\symbols*http://msdl.microsoft.com/download/symbols 载入sos.dll  执 ...

  8. K米APP案例分析

    关于 K米 -- 的案例分析 产品 K米的APP (全国KTV点歌,手机直播,互动,交友,预订)的Android客户端 第一部分 调研,评测 评测: 软件的bug,功能评测,黑箱测试 • 下载并使用, ...

  9. linux 内核 RCU机制详解

    RCU(Read-Copy Update)是数据同步的一种方式,在当前的Linux内核中发挥着重要的作用.RCU主要针对的数据对象是链表,目的是提高遍历读取数据的效率,为了达到目的使用RCU机制读取数 ...

  10. CSS--值和单位

    等价颜色表 什么叫Web安全色 所谓的“web安全”颜色是指在256色计算机系统上总能避免抖动的颜色. Web安全颜色可以表示为RGB值为20%和51(相应的十六进制值为33)的倍数. 如果使用RGB ...