原题: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]。
时间: 2024-10-10 22:20:17