【问题标题】:I am trying to pivot a file using awk我正在尝试使用 awk 旋转文件
【发布时间】:2018-05-19 08:10:03
【问题描述】:

我正在尝试使用 awk 旋转文件。 输入文件:

FA-1D_005 10000090fa180e49 FA-2D_006 10000090fa180e49 FA-2D_011 10000090fa180e49 FA-3D_004 10000090fa180e49 FA-4D_005 10000090fa180e49 FA-2D_004 20010090fa180e49 FA-2D_008 20010090fa180e49 FA-3D_004 20010090fa180e49 FA-1D_006 20020090fa180e49 FA-4D_004 20020090fa180e49 FA-1D_006 20030090fa180e49 FA-4D_004 20030090fa180e49 FA-2D_006 20040090fa180e49 FA-2D_009 20040090fa180e49 FA-3D_005 20040090fa180e49 FA-1D_006 10000090fa180e48 FA-1D_011 10000090fa180e48 FA-2D_006 10000090fa180e48 FA-3D_005 10000090fa180e48 FA-4D_006 10000090fa180e48 FA-1D_004 20010090fa180e48 FA-2D_006 20010090fa180e48 FA-2D_011 20010090fa180e48 FA-3D_004 20010090fa180e48 FA-3D_006 20010090fa180e48 FA-4D_005 20010090fa180e48 FA-1D_006 20020090fa180e48 FA-2D_004 20020090fa180e48 FA-2D_010 20020090fa180e48 FA-3D_004 20020090fa180e48 FA-4D_004 20020090fa180e48 FA-3D_005 20030090fa180e48 FA-3D_007 20030090fa180e48 FA-1D_005 20040090fa180e48

期望的输出

FA-1D_005 10000090fa180e49 FA-2D_006
FA-2D_011
FA-3D_004

FA-4D_005

FA-2D_004 20010090fa180e49 FA-2D_008

FA-3D_004

FA-1D_006 20020090fa180e49

FA-4D_004

FA-1D_006 20030090fa180e49

FA-4D_004

FA-2D_006 20040090fa180e49 FA-2D_009

FA-3D_005

FA-1D_006 10000090fa180e48 FA-1D_011
FA-2D_006
FA-3D_005

FA-4D_006

FA-1D_004 20010090fa180e48 FA-2D_006
FA-2D_011
FA-3D_004
FA-3D_006

FA-4D_005

FA-1D_006 20020090fa180e48 FA-2D_004
FA-2D_010
FA-3D_004

FA-4D_004

FA-3D_005 20030090fa180e48

FA-3D_007

FA-1D_005 20040090fa180e48

请告知生成数据透视表的最佳方法是什么? 提前致谢。

【问题讨论】:

  • 到目前为止你尝试过什么代码?
  • 花一些时间格式化问题以获得更多答案......

标签: linux shell awk scripting solaris


【解决方案1】:

awk 来救援!

$ awk 'NR==1{hr=sprintf("%"length($0)"s"," ");gsub(" ","-",hr)} 
            {print (p==$2?$1:hr "\n" $0); p=$2} 
         END{print hr}' file

---------------------------
FA-1D_005  10000090fa180e49
FA-2D_006
FA-2D_011
FA-3D_004
FA-4D_005
---------------------------
FA-2D_004  20010090fa180e49
FA-2D_008
FA-3D_004
---------------------------
FA-1D_006  20020090fa180e49
FA-4D_004
---------------------------
FA-1D_006  20030090fa180e49
FA-4D_004
---------------------------
FA-2D_006  20040090fa180e49
FA-2D_009
FA-3D_005
---------------------------
FA-1D_006  10000090fa180e48
FA-1D_011
FA-2D_006
FA-3D_005
FA-4D_006
---------------------------
FA-1D_004  20010090fa180e48
FA-2D_006
FA-2D_011
FA-3D_004
FA-3D_006
FA-4D_005
---------------------------
FA-1D_006  20020090fa180e48
FA-2D_004
FA-2D_010
FA-3D_004
FA-4D_004
---------------------------
FA-3D_005  20030090fa180e48
FA-3D_007
---------------------------
FA-1D_005  20040090fa180e48
---------------------------

【讨论】:

  • 我收到语法错误。我的操作系统是 solaris [SunOS hostname 5.10 Generic_150401-38 i86pc i386 i86pc] awk 'NR==1{hr=sprintf("%"length($0)"s"," ");gsub(" ","-", hr)}{print (p==$2?$1:hr "\n" $0); p=$2}END{print hr}' kay.txt awk:第 1 行附近的语法错误 awk:第 1 行附近的非法语句 awk:第 1 行附近的语法错误 awk:第 1 行附近的非法语句
  • 在 Solaris 上,您需要找到工作的awk,据我所知,默认的已损坏。此代码可能正在使用 GNU awk 特定扩展。尝试查找gawk
  • 那里没有特定于 gawk 的内容,它适用于任何 POSIX awk。在 Solaris 上使用 /usr/xpg4/bin/awk 因为它最接近 Solaris 上的 POSIX 标准,并且可以使用该脚本。永远不要在 Solaris 上使用 /bin/awk,因为它是旧的、损坏的 awk,绝对不能使用。 Solaris 应该在几年前删除它。
  • @EdMorton Solaris 应该在几年前就将其删除了。 这样做 会破坏依赖于 /bin/awk 预先标准化行为的现有软件.
  • Solaris,没有了 :(
猜你喜欢
  • 2020-04-07
  • 2021-12-03
  • 2021-04-05
  • 2019-11-18
  • 2018-05-24
  • 2019-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多