AWK中的OFS的问题
echo a b c d |awk '{OFS = ":";print $0}'
我的理解是应该把输出显示为如下的方式
a:b:c:d
dan但执行的结果不是这样的
a b c d
为什么啊
echo a b c d|awk '{print $1":"$2":"$3":"$4}'
或者
echo a b c d|awk 'BEGIN {OFS=":"}{print $1,$2,$3,$4}'
或
echo a b c d|awk '{OFS=":";print $1,$2,$3,$4}'
这个方法我知道
我是想知道为什么OFS没起作用
奇怪的是我改变其中一个字段的值确能显示分隔符
echo a b c d |awk '{OFS = ":";$2="3";print $0}'
a:3:c:d
原来如此,谢谢
原来如此,是什么原因啊?
echo a b c d |awk '{OFS = ":";print $0}'
错误就在这里,$0是打印这条记录,OFS对它不起作用
echo a b c d|awk '{OFS=":";print $1,$2,$3,$4}' 这样就对了
下面引用由twlogin在 2002/09/28 01:50pm 发表的内容:
奇怪的是我改变其中一个字段的值确能显示分隔符
echo a b c d |awk '{OFS = ":";$2="3";print $0}'
...
那改变其中一个字段的值
如
echo a b c d |awk '{OFS=":";$2="b";print $0}'
结果又对了,why?
是不是改变其中一个字段的值后,每个字段的会自动加上OFS
只能说awk对于OFS的改变后,中间没有提供他任何加工输出数据的机会,那OFS的改变也失效了.
awk也是个常人写得程序.总有不周之处啊.
在《sed和awk编程篇》中有这样一句:
如果给字段变量赋一个新值,那么awk会自动地使用内部变量OFS重新生成$0
该书中讲解了 $0 什么被重新生成的例子
注意观察:echo "a:b:c" | awk 'BEGIN{FS=":"}{OFS="#";$1=$1;print $0}'这样也是可以的。
AWK中的OFS的问题的更多相关文章
- 转 awk中RS,ORS,FS,OFS区别与联系
今天用到awk ofs 看到一篇不错文章 awk中RS,ORS,FS,OFS区别与联系 张映 发表于 2010-12-02 分类目录: shell 标签:awk, FS, OFS, ORS, RS, ...
- linux awk 中 RS,ORS,FS,OFS 区别与联系【转】
linux awk 中 RS,ORS,FS,OFS 区别与联系 http://blog.csdn.net/jesseen/article/details/7992929
- 关于awk中NR、FNR、NF、$NF、FS、OFS的说明
一.NR和FNR 1.释义 NR: 表示当前读取的行数 FNR:当前修改了多少行 2.举例 比如现在AWK处理到第五行.第一行没有进行操作,2,3,4,5行进行了操作,那么NR=5,FNR=4 NR= ...
- awk 中 RS,ORS,FS,OFS 区别与联系
一,RS与ORS 1,RS是记录分隔符,默认的分隔符是\n,具体用法看下 [root@krlcgcms01 mytest]# cat test1 //测试文件 111 222 333 444 ...
- awk中分隔符转换
awk中分隔符转换的问题(转) 在awk中明明用OFS重新设置了分隔符,为什么在输出的时候还是原样输出呢! 他是这么写的: echo 1,2,3,4 | awk 'BEGIN{FS=" ...
- awk 中 fieldwidths使用方法
AWK中的FIELDWIDTHS是一个很好用的变量,这个变量可以指定字符串按照怎么样的宽度进行展示 实例一: 要求: 032130 032131 146230 035048 222049 095070 ...
- awk中的system和getline的用法
system只能对命令的输出结果输出到终端. getline在awk中可以使命令的输出结果传到一个变量中保存. # awk 'BEGIN{system("date")|getlin ...
- awk中可以使用system来执行复杂的shell命令
在awk中可以直接执行shell命令. zoer@ubuntu:~$ touch a zoer@ubuntu:~$ touch b zoer@ubuntu:~$ cat a.txt a b zoer@ ...
- Awk中调用shell命令
Awk中调用shell命令 需求 在awk中,有时候需要调用linux系统中命令,如计算字符串的MD5值,并保存下来. 方法参考 call a shell command from inside aw ...
随机推荐
- Google浏览器Chrome安装失败,错误代码0xa0430721解决办法
谷歌浏览器安装失败错误代码0xa0430721 的解决办法 这个是因为我们删除的时候没有删除干净.然后又重装了谷歌浏览器.所以就出现这个问题了. 1.删除旧的配置文件,比如C:\Documents a ...
- 如何获取隔壁wifi密码,非暴力破解
目前常见的Wi-Fi加密方式有WEP.WPA2和WPS(链接为各自的破解方式),不过有网友反映以往破解WPA2的方法耗时太长,而且不适用于所有WPS启动的接入点.而今天介绍的这种方法则更加省时省力. ...
- 【六】注入框架RoboGuice使用:(Singletons And ContextSingletons)
上一篇我们简单的介绍了一下RoboGuice的使用([五]注入框架RoboGuice使用:(Your First POJO Injection)),今天我们来看下单例以及上下文单例(ContextSi ...
- 6 cocos2dx粒子效果,类图关系,系统原生粒子和自己定义粒子效果,粒子编译器软件,爆炸粒子效果,烟花效果,火焰效果,流星效果,漩涡粒子效果,雪花效果,烟雾效果,太阳效果,下雨效果
1 粒子 演示样例 2 类图关系 3 系统原生粒子 CCParticleSystem 全部粒子系统的父类 CCParticleSystemPoint. CCParticleSystemQuad ...
- 细聊MySQL的分区功能
此篇主要介绍下MySQL的分区功能.我们分别从分区的概念.分区对于MySQL应用的优点.分区的类别及设置来和大家一起探讨下MySQL的分区. 什么是分区? MySQL在未启用分区功能时,数据库的单个表 ...
- AS 代码模板 文件模板 Templates MD
修改 File and Code Templates Settings –> Editor –>[File and Code Templates] 或者在右键new时选择子菜单[Edite ...
- 深入理解JSON
一.JS判断字符串是否为JSON的方法: function isJSON(str) { if (typeof str == 'string') { try { JSON.parse(str); ret ...
- linux用户管理中两个重要的“父子”配置文件
在Linux中主要通过用户配置文件来查看和修改用户信息,因此下面我们将介绍两个重要的用户配置文件,让你能够更好的hold住你的用户. 一:父文件/etc/passwd 1.查看配置文件/etc/pas ...
- OAuth 2.0 RFC 框架 中文
Internet Engineering Task Force (IETF) D. Hardt, Ed.Request for Comments: 6749 MicrosoftObsoletes: 5 ...
- 自己的一个js库
https://github.com/sqqihao/nono_framework.git 持续更新,慢慢写着,这样才能成长