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 ...
随机推荐
- java实时监控mysql数据库变化
对于二次开发来说,很大一部分就找找文件和找数据库的变化情况 对于数据库变化.还没有发现比较好用的监控数据库变化监控软件. 今天,我就给大家介绍一个如何使用mysql自带的功能监控数据库变化 1.打开数 ...
- JS动态改变select选择变更option的index值
document.getElementById("louyuming").options[0].selected=true; function jsSelectIsExitItem ...
- Objective—C中的排序及Compare陷阱
campare陷阱 NSString有多个compare相关方法: - (NSComparisonResult)compare:(NSString *)string; - (NSComparisonR ...
- acd Convex(求面积)
Problem Description We have a special convex that all points have the same distance to origin point. ...
- cgroup子系统2_devices子系统
devices子系统用于控制cgroup中全部进程能够訪问哪些设备,三个控制文件:devices.allow,devices.deny,devices.list. devices.allow用于指定c ...
- 定义和使用EL函数
EL为表达式语言,在EL中,允许定义和使用函数.下面将介绍如何定义和使用EL的函数. 1. 定义和使用函数 函数的定义和使用分为以下3个步骤: (1)编写一个Java类,并在该类中编写公用的静态方法, ...
- 第十九章 springboot + hystrix(1)
hystrix是微服务中用于做熔断.降级的工具. 作用:防止因为一个服务的调用失败.调用延时导致多个请求的阻塞以及多个请求的调用失败. 1.pom.xml(引入hystrix-core包) <! ...
- 比较windows phone程序启动和android程序启动原理
windows phone 程序是如何启动的了,他和android程序有什么区别,我们重点从native code 层面来分析 在windows phone 程序启动的时候是: 在XAML中使用应用程 ...
- 【nodejs】理想论坛帖子下载爬虫1.06
//====================================================== // 理想论坛帖子下载爬虫1.06 // 循环改成了递归,但最多下载千余文件就崩了 / ...
- 在Java程序中做字符串拼接时一定要记得的MessageFormat.format
Java里从来少不了字符串拼接的活,Java程序员也肯定用到过StringBuffer,StringBuilder,以及被编译器优化掉的+=.但这些都和下文要谈的无关. 比如有这样的字符串: 张三将去 ...