Linux 文本行列转换

简介: 使用awk进行行列转换 假设有一个文件 test ,包含的数据遵循以下格式: 同一行数据,单词之间为1个空格" " 每一行都有同样多的数据,个数相同   处理命令: awk '{for(i=1;i

使用awk进行行列转换

假设有一个文件 test ,包含的数据遵循以下格式:

同一行数据,单词之间为1个空格" "

每一行都有同样多的数据,个数相同

 

处理命令:

awk '{for(i=1;i<=NF;i=i+1){a[NR,i]=$i}}END{for(j=1;j<=NF;j++){str=a[1,j];for(i=2;i<=NR;i++){str=str " " a[i,j]}print str}}' test

简单说明:

NR - Number of Record - 当前处理的行是第几行(因为awk是流处理工具,一行一行处理的,所以NR在不停的自增1);END里面引用的NR,是处理完文本后的NR

FNR - File Number of Record - 当前处理的行是当前处理文件的第几行

NF - Number of Fileds - 当前行有多少列数据(这个在每行都会根据设定的分割符重新计算,默认分割符是任意连续的多个空白符)

 

处理过程简析:

第一步是把文本里的数据存入一个2维数组;存放的方式要和文本中的一模一样;

awk处理文本时获得了行列数据;NR表示处理了几行文本,输出结果就有NR列;NF表示文本的列数,输出结果有NF行

在END模块里处理2维数组;把数组的行转为列,并存入另一个2维数组str中

最后打印出这个数组str

目录
相关文章
|
1月前
|
存储 Shell Linux
【Shell 命令集合 文档编辑】Linux 文本统计 wc命令使用指南
【Shell 命令集合 文档编辑】Linux 文本统计 wc命令使用指南
39 0
|
2月前
|
Linux Shell Perl
Linux下的Shell基础——文本处理工具(五)
Linux下的Shell基础——文本处理工具(五)
31 1
Linux下的Shell基础——文本处理工具(五)
|
4月前
|
NoSQL Java Linux
Linux常用命令(文件目录操作、拷贝移动、打包压缩、文本编辑、查找)
Linux常用命令(文件目录操作、拷贝移动、打包压缩、文本编辑、查找)
|
1月前
|
Linux C语言 C++
Linux Shell_cut命令(按列提取文本字符)
Linux Shell_cut命令(按列提取文本字符)
21 0
|
3月前
|
Unix Linux 开发工具
【Linux】VIM命令模式和文本输入模式切换操作
【1月更文挑战第18天】【Linux】VIM命令模式和文本输入模式切换操作
|
1月前
|
算法 Shell Linux
【Shell 命令集合 文档编辑 】Linux 文本搜索 look 命令使用指南
【Shell 命令集合 文档编辑 】Linux 文本搜索 look 命令使用指南
26 0
|
1月前
|
算法 Shell Linux
【Shell 命令集合 文档编辑】Linux 文本搜索工具 grep命令使用指南
【Shell 命令集合 文档编辑】Linux 文本搜索工具 grep命令使用指南
30 4
|
1月前
|
存储 Shell Linux
【Shell 命令集合 文件管理】Linux 文本处理工具 awk命令使用指南
【Shell 命令集合 文件管理】Linux 文本处理工具 awk命令使用指南
34 0
|
1月前
|
存储 Linux Perl
Linux|Awk 特定模式 过滤 文本
Linux|Awk 特定模式 过滤 文本
11 0
|
1月前
|
监控 Linux
Linux 常用的文本处理工具
将一个或多个文件的内容连接并显示在终端上,创建新文件或将内容追加到已有文件。 不会分屏显示文件内容,适用于较小的文件。 在执行上述命令后,你可以输入内容,按Ctrl + D保存并退出。 more/less 分页 more filename more 按空格键查看下一页,按Enter键查看下一行,按q键退出并退出,使用b向上翻动一页。 less 可以被视为 more 的升级版本 less filename less 按空格键查看下一页,按Enter键查看下一行,按q键退出并退出,使用b向上翻动一页,使用箭头键、搜索命令 /。
20 2