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 ...
随机推荐
- window.open("url?param="+paramvalue) 服务端 乱码问题解决
window.open("url?param="+paramvalue)传递参数出现乱码,在客房端显示是正常的,可是到服务端就是乱码. 1. 利用一个js在客户端转码的函数,esc ...
- SQL_求集合中每天最大时间记录的总和
--问题求 集合中每天最大时间的总和 表中的数据 列: 用户 分数 时间 A 2 2014-01-01 01:00:00 A 2 2014-01-01 02:00:00 A 2 2014-01-01 ...
- 解决hue报错:timed out (code THRIFTSOCKET): None
报错栈: [/Jun/ :: +] decorators ERROR error running <function execute at 0x7fba2804ecf8> Tracebac ...
- C语言union关键字,union和struct区别
union 关键字的用法与struct 的用法非常类似. union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在union 中所有的数据成员共用一个空间,同一时间 ...
- 聊聊clean code
clean code,顾名思义就是整洁的代码,或者说清晰.漂亮的代码,相信大多数工程师都希望自己能写出这样的代码. 也许这是个千人千面的话题,每个工程师都有自己的理解.比如我,从一个天天被骂代码写得烂 ...
- 3D屏保程序:汉诺塔
学过程序的人一定记得汉诺塔.我们学的第一个程序是HelloWorld,而碰到的第一个坑就是汉诺塔,短短十几行代码,不知花费了多少时间精力去理解.我记得当年的开发环境还是蓝屏的,汉诺塔程序的输出还是一行 ...
- multiple definition of 问题解决方法
在最近的项目里,由于我想重载结构体的==操作符,然而大意的我把重载的过程写在了头文件里,所以导致了multiple definition of的错误.现在总结下解决方法: 首先,最关键的,不要把全局变 ...
- C#中图片透明【转】
C#中图片透明 /// <summary> /// 处理图片透明操作 /// </summary> /// <param name="srcImage" ...
- 一键切换皮肤的解决思想及iframe嵌套时寻找下级iframe的方法
项目中有个一键切换皮肤的功能,感觉还不错,记录下,就是各颜色样式设置起来太复杂了,不知道有没有更简便的方法: 1.切换皮肤结构层 <li title="<s:text name= ...
- (step4.1.2)hdu 1969(Pie——二分查找)
题目大意:n块馅饼分给m+1个人,每个人的馅饼必须是整块的,不能拼接,求最大的. 解题思路: 1)用总饼的体积除以总人数,得到每个人最大可以得到的V.但是每个人手中不能有两片或多片拼成的一块饼. 代码 ...