Shell练习 行列转换

Posted qingyezhu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell练习 行列转换相关的知识,希望对你有一定的参考价值。

原题:https://leetcode.com/problems/transpose-file/
Given a text file file.txt, transpose its content. You may assume that each row has the same number of columns and each field is separated by the character. For example, if file.txt has the following content: name age alice 21 ryan 30 Output the following: name alice ryan age 21 30

简单的意思是有一个文件内容中每一行中用空格隔开,且行数与列数相等,请输出时,第一列的作为第一行,第二列的作为第二行,说白了就是行列转换

将所有内容存储到一个二维数组中,之后按列输出每一行,即可。

答案:

cat file.txt|awk BEGIN{c=0;} {for(i=1;i<=NF;i++) {num[c,i] = $i;} c++;} END{ for(i=1;i<=NF;i++){str=""; for(j=0;j<NR;j++){ if(j>0){str = str" "} str= str""num[j,i]}printf("%s\n", str)} }

其中使用到awk命令,而在awk中有BEGIN(开始),END(结束),NF(列数,从1开始),NR(行数,从1开始)。

字符串的拼接,如str=str""num[j,i]。

 

以上是关于Shell练习 行列转换的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本,awk实现行列转换

SQL的行列转换

SQL语句的行列转换

SqlServer 行列转换

SQL 行列转换问题,请高手指点。

特殊EXCEL行列转换