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的问题的更多相关文章

  1. 转 awk中RS,ORS,FS,OFS区别与联系

     今天用到awk ofs 看到一篇不错文章 awk中RS,ORS,FS,OFS区别与联系 张映 发表于 2010-12-02 分类目录: shell 标签:awk, FS, OFS, ORS, RS, ...

  2. linux awk 中 RS,ORS,FS,OFS 区别与联系【转】

    linux awk 中 RS,ORS,FS,OFS 区别与联系 http://blog.csdn.net/jesseen/article/details/7992929

  3. 关于awk中NR、FNR、NF、$NF、FS、OFS的说明

    一.NR和FNR 1.释义 NR: 表示当前读取的行数 FNR:当前修改了多少行 2.举例 比如现在AWK处理到第五行.第一行没有进行操作,2,3,4,5行进行了操作,那么NR=5,FNR=4 NR= ...

  4. awk 中 RS,ORS,FS,OFS 区别与联系

    一,RS与ORS 1,RS是记录分隔符,默认的分隔符是\n,具体用法看下 [root@krlcgcms01 mytest]# cat test1     //测试文件 111 222 333 444 ...

  5. awk中分隔符转换

    awk中分隔符转换的问题(转) 在awk中明明用OFS重新设置了分隔符,为什么在输出的时候还是原样输出呢! 他是这么写的:    echo 1,2,3,4 | awk 'BEGIN{FS=" ...

  6. awk 中 fieldwidths使用方法

    AWK中的FIELDWIDTHS是一个很好用的变量,这个变量可以指定字符串按照怎么样的宽度进行展示 实例一: 要求: 032130 032131 146230 035048 222049 095070 ...

  7. awk中的system和getline的用法

    system只能对命令的输出结果输出到终端. getline在awk中可以使命令的输出结果传到一个变量中保存. # awk 'BEGIN{system("date")|getlin ...

  8. awk中可以使用system来执行复杂的shell命令

    在awk中可以直接执行shell命令. zoer@ubuntu:~$ touch a zoer@ubuntu:~$ touch b zoer@ubuntu:~$ cat a.txt a b zoer@ ...

  9. Awk中调用shell命令

    Awk中调用shell命令 需求 在awk中,有时候需要调用linux系统中命令,如计算字符串的MD5值,并保存下来. 方法参考 call a shell command from inside aw ...

随机推荐

  1. appium+python自动化53-adb logcat查看日志

    前言 做app测试,遇到异常情况,查看日志是必不可少的,日志如何输出到手机sdcard和电脑的目录呢?这就需要用logcat输出日志了 以下操作是基于windows平台的操作:adb logcat | ...

  2. MATLAB SVM

    clc;clear;close all; traindata = [1,0; 3,10; 2,2; 2,3; -1,-1; -6,-4; -4,-1; -1.5, -3];group = [1 1 1 ...

  3. OpenShift采用Blackbox_exporter进行服务状态监控

    本文主要是针对prometheus的blackbox_exporter,对集群中的服务进行状态的监控 因为OpenShift 3.11版本自己带的promethues修改起来有一些问题,所以自己安装和 ...

  4. 使用cxf开发webservice接口

    项目中经常用到开发webservice接口,及调用webService接口.这里讲解如何使用cxf开发webService接口. 一.webservice介绍及理解 webservice是一种跨平台, ...

  5. 第二十四章 springboot注入servlet

    问:有了springMVC,为什么还要用servlet?有了servlet3的注解,为什么还要使用ServletRegistrationBean注入的方式? 使用场景:在有些场景下,比如我们要使用hy ...

  6. 理解JavaScript模仿块作用域

    1.JS没有块作用域 在C和Java中,一对大括号{}决定一个作用域,比如for循环.在js中,变量可以在函数任何一处定义,并且忽略重复定义.变量初始化之前使用,值永远是undefined. func ...

  7. 在Hadoop上运行基于RMM中文分词算法的MapReduce程序

    原文:http://xiaoxia.org/2011/12/18/map-reduce-program-of-rmm-word-count-on-hadoop/ 在Hadoop上运行基于RMM中文分词 ...

  8. 【Python】在控制台输出不同颜色的文字

    今天调程序出了一个极为奇怪的问题,由于控制台输出挺多,就想把问题着重表示一下,具体即是在控制台输出红色文字. 于是在网上搜寻到了这篇:https://www.cnblogs.com/gongxr/p/ ...

  9. Unable to resolve superclass of

    因为用了和Google map相关的类,而Google map是单独的library,需要导入之后才能使用,因此在manifest.xml文件中的<application></app ...

  10. error: Microsoft Visual C++ 9.0 is required. Get it from http://aka.ms/vcpython27

    G:\Soft\python\word_cloud-master>python setup.py install error: Microsoft Visual C++ 9.0 is requi ...