博客
关于我
shell基础---行转列(awk),列转行(tr)
阅读量:517 次
发布时间:2019-03-08

本文共 913 字,大约阅读时间需要 3 分钟。

shell行转列与列转行

在日常的数据处理任务中,经常需要将文件中的行格式数据转换成列格式数据,或者反之。本文将介绍两种常用工具和命令:shell中的awktr,并伴随示例说明其使用方法。

行转列(awk)

当需要将文件中的行数据转换为多列格式时,可以使用awk命令。awk是一种强大的文本处理工具,能够基于用户自定义的规则对文本进行模式匹配和处理。在行转列任务中,awk的使用非常简便。

以下是一个典型的awk命令示例,用于将文件中的行数据转换为表格格式:

awk -F "+" '{for(i=1;i<=NF;i++) a[i,NR]=$i}END{for(i=1;i<=NF;i++) {for(j=1;j<=NR;j++) printf a[i,j] " ";print ""}}' file.txt
  • -F "+":指定输入的字段分隔符为加号+
  • NF:表示最前面逐行读取的字段数。
  • END:表示awk处理完所有记录之后执行的代码块。
  • printf:用于生成输出格式化的内容。
  • NR:表示当前记录的行数。

在处理完成后,awk会将文件中的行数据转换为表格显示,每一行对应一个记录的字段。

列转行(tr)

在某些场景下,可能需要将文件中的列数据转换为行数据。此时,可以使用tr(replace文本)命令来实现。tr命令主要用于字符替换,对于简单的行列转换也能够发挥作用。

以下是一个将文件中逗号分隔的列数据转换为行数据的tr命令示例:

cat file.txt | tr "\n" "," | sed -e 's/,$/\n/'
  • cat file.txt:读取文件内容。
  • tr "\n" ",":将换行符"\n"替换为逗号","
  • sed -e 's/,$/\n/':使用sed进行进一步处理,将不带换行符的逗号分隔字符串转换为带有换行符的多行内容。

操作步骤总结

  • 行转列

    • 使用awk命令处理文件。
    • 指定字段分隔符,并根据需求输出格式。
  • 列转行

    • 使用tr命令将换行符替换为逗号。
    • 进一步使用sed处理格式化输出。
  • 通过这些命令,您可以轻松地将文件数据从行格式转换为列格式,或者反之,从而更方便地进行数据分析和处理。

    转载地址:http://rgqnz.baihongyu.com/

    你可能感兴趣的文章
    VTK:PolyData之RemoveVertices
    查看>>
    VTK:Qt之SideBySideRenderWindowsQt
    查看>>
    VTK:RenderMan之PolyDataRIB
    查看>>
    VTK:Rendering之DiffuseSpheres
    查看>>
    VTK:Rendering之MotionBlur
    查看>>
    VTK:简单操作之FloatingPointExceptions
    查看>>
    VTK:Utilities之BrownianPoints
    查看>>
    VTK:Utilities之DenseArrayRange
    查看>>
    VTK:Utilities之FrameRate
    查看>>
    VTK:Utilities之PCADemo
    查看>>
    VTK:Utilities之VectorArrayUnknownLength
    查看>>
    VTK:Render之RenderView
    查看>>
    VTK:可视化之AlphaFrequency
    查看>>
    重复点击事件(仅限于路由)
    查看>>
    VTK:可视化之AnnotatedCubeActor
    查看>>
    VTK:可视化之Arbitrary3DCursor
    查看>>
    VTK:可视化之Arbitrary3DCursor
    查看>>
    VTK:可视化之BackfaceCulling
    查看>>
    VTK:可视化之LoopShrink
    查看>>
    li 修改前面小圆点的颜色
    查看>>