AWK改变输入输出分隔符实例分析
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改变输入输出分隔符实例分析的更多相关文章
- Camera图像处理原理及实例分析-重要图像概念
Camera图像处理原理及实例分析 作者:刘旭晖 colorant@163.com 转载请注明出处 BLOG:http://blog.csdn.net/colorant/ 主页:http://rg ...
- 一些有用的javascript实例分析(二)
原文:一些有用的javascript实例分析(二) 5 求出数组中所有数字的和 window.onload = function () { var oBtn = document.getElement ...
- Awk使用及站点日志分析
Awk使用及站点日志分析 Awk简单介绍 概述 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入, ...
- Camera图像处理原理及实例分析
Camera图像处理原理及实例分析 作者:刘旭晖 colorant@163.com 转载请注明出处 BLOG:http://blog.csdn.net/colorant/ 主页:http://rg ...
- sql注入实例分析
什么是SQL注入攻击?引用百度百科的解释: sql注入_百度百科: 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具 ...
- Linux I2C设备驱动编写(三)-实例分析AM3359
TI-AM3359 I2C适配器实例分析 I2C Spec简述 特性: 兼容飞利浦I2C 2.1版本规格 支持标准模式(100K bits/s)和快速模式(400K bits/s) 多路接收.发送模式 ...
- 【转】Linux I2C设备驱动编写(三)-实例分析AM3359
原文网址:http://www.cnblogs.com/biglucky/p/4059586.html TI-AM3359 I2C适配器实例分析 I2C Spec简述 特性: 兼容飞利浦I2C 2.1 ...
- 一些有用的javascript实例分析(三)
原文:一些有用的javascript实例分析(三) 10 输入两个数字,比较大小 window.onload = function () { var aInput = document.getElem ...
- 一些有用的javascript实例分析(一)
原文:一些有用的javascript实例分析(一) 本文以http://fgm.cc/learn/链接的实例索引为基础,可参见其实际效果.分析和整理了一些有用的javascript实例,相信对一些初学 ...
随机推荐
- 【POJ 1556】The Doors 判断线段相交+SPFA
黑书上的一道例题:如果走最短路则会碰到点,除非中间没有障碍. 这样把能一步走到的点两两连边,然后跑SPFA即可. #include<cmath> #include<cstdio> ...
- 【2016多校训练4】Multi-University Training Contest 4
1001 Another Meaning 题意:字符串A中包含的字符串B可以翻译或不翻译,总共有多少方案. 题解:动规,dp[i]表示A的第i位为止有多少方案. 转移方程: dp[i]=dp[i-1 ...
- redis 可视化工具
Redis Desktop Manager 下载 phpRedisAdmin 是一个用php管理redis的工具 下载
- bounds的剖析
bounds的剖析: UIScrollView的常见属性: contentSize:滚动范围,内容的尺寸(CGSize) contentInset :内边距:内容的上左下右的边距(UIEdgeIn ...
- BIEE11G配置Oracle数据源
注:数据库发生变化只需要修改视图层 两种方式: (1) 在BIEE自带的Oracle客户端目录下的tnsname.ora文件中配置 把E:\app\Administrator\produc ...
- 【BZOJ-4692】Beautiful Spacing 二分答案 + 乱搞(DP?)
4692: Beautiful Spacing Time Limit: 15 Sec Memory Limit: 128 MBSubmit: 46 Solved: 21[Submit][Statu ...
- springMVC-配置Bean
配置Bean - 配置形式:基于xml文件方式,基于注解的方式- bean的配置方式:通过全类名(反射),通过工厂方法(静态工厂方法和实例工厂方法),FactoryBean依赖注入的方方式,属性注入和 ...
- asp.net下webform的ReadOnly和Enabled属性最终渲染的结果
ReadOnly对应readonly="readonly" Enabled对应disabled="disabled" 然后研究了一下这两种的用法,特此标记一下: ...
- SQL Server在更改计算机名后的设置
把原来的账号删除 再添加现有的账号 添加权限 搞定了上面的账号配置,接下来就是设置服务器名称 参考:http://www.cnblogs.com/EasonJim/p/6114249.html 后话: ...
- Visual Studio多版本进行切换的研究
最近在升级公司内部的项目到最新的开发工具Visual Studio 2015,可能在团队开发上会遇到这些问题: 1.团队成员的电脑和系统,设置安装的开发工具参差不齐 2.有些成员的Visual Stu ...