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 ...
随机推荐
- jsp数据库连接大全和数据库操作封装到Javabean
一.jsp连接Oracle8/8i/9i数据库(用thin模式) testOracle.jsp如下: <%@ page contentType="text/html;charset=g ...
- 配置quartz数据源的三种方式
如果是使用了JDBC JobStore或JobStoreCMT获得持久的Job时,就要配置相关的数据源了. 方式一:使用quartz.properties文件,这时只需要在property文件中增加如 ...
- Latex:表格制作全攻略
给出一个制作复杂表格的例子,制作表格主要用到multicolumn,multirow和cline,其中,要使用multirow,必须usepackage{multirow} 如果要制作出如下图所示的表 ...
- OpenCV学习(32) 求轮廓的包围盒
在OpenCV中,能够很方便的求轮廓包围盒.包括矩形,圆形,椭圆形以及倾斜的矩形(包围面积最小)集中包围盒.用到的四个函数是: Rect boundingRect(InputArray points) ...
- [20] 鼓状物(Drum)图形的生成算法
顶点数据的生成 bool YfBuildDrumVertices ( Yreal radius, Yreal assistRadius, Yuint slices, Yuint stacks, YeO ...
- go语言基础之切片和底层数组关系
1.切片和底层数组关系 示例: package main //必须有个main包 import "fmt" func main() { a := []int{0, 1, 2, 3, ...
- WKT
WKT - 概念 WKT(Well-known text)是一种文本标记语言,用于表示矢量几何对象.空间参照系统及空间参照系统之间的转换.它的二进制表示方式,亦即WKB(well-known bina ...
- python3 把excel文件合并并保存到csv文件
具体是这样,某路径下有很多 excel文件,文件名中包含相同关键字的是一类文件,把包含相同关键字的文件合并成一个文件,生成一个新的csv文件 # coding=utf-8 import xlrd im ...
- Spring 在XML中声明切面/AOP
在Spring的AOP配置命名空间中,我们能够找到声明式切面选择.看以下: <aop:config> <!-- AOP定义開始 --> <aop:pointcut/> ...
- 图像处理MATLAB源代码
图像反转 I=imread('nickyboom.jpg'); J=double(I); J=-J+(256-1); %图像反转线性变换 H=uint8(J); sub ...