博客
关于我
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/

    你可能感兴趣的文章
    Python数据分析(二): Numpy技巧 (2/4)
    查看>>
    09 . Python3之常用模块
    查看>>
    Python学习笔记-StatsModels 统计回归(3)模型数据的准备
    查看>>
    Velocity.js初步
    查看>>
    yarn出现“There are no scenarios ; must have at least one"
    查看>>
    nginx上配置phpmyadmin
    查看>>
    HustOJ二次开发之修改数据库连接池
    查看>>
    redis集群报错:(error) CLUSTERDOWN Hash slot not served
    查看>>
    一个JAVA应用启动缓慢问题排查 --来自jdk securerandom 的问候
    查看>>
    spring-boot-2.0.3之redis缓存实现,不是你想的那样哦!
    查看>>
    httprunner学习23-加解密
    查看>>
    有道云笔记 同步到我的博客园
    查看>>
    阿里云“网红&quot;运维工程师白金:做一个平凡的圆梦人
    查看>>
    李笑来必读书籍整理
    查看>>
    vue书籍整理
    查看>>
    记Java中有关内存的简单认识
    查看>>
    http头部 Expect
    查看>>
    Hadoop(十六)之使用Combiner优化MapReduce
    查看>>
    C#实现outlook自动签名
    查看>>
    《机器学习Python实现_10_06_集成学习_boosting_gbdt分类实现》
    查看>>