2019/10/16【转置文件】

题目:

给定一个文件 file.txt,转置它的内容。

你可以假设每行列数相同,并且每个字段由 ' ' 分隔.

示例:

假设 file.txt 文件内容如下:

name age
alice 21
ryan 30
应当输出:

name alice ryan
age 21 30

#!/bin/bash
#转置文件
#
#/bin/bash
num=`cat file.txt | head -n 1|awk '{print NF}'`  #获取原文件有多少列
declare -i first=1                               #定义一个数值变量
while [ $first -le $num ]                        #while循环遍历原文件的每一列
do
         aa=()                                   #定义一个空数组
        declare -i ii=0                          #定义数组下标由0开始
        content=`awk -v j="$first" '{print $j}' file.txt`    #获取原文件每一列内容
        for item in $content                      #for循环遍历每一列内容
        do        

                aa[$ii]=$item                      #将每一列内容的每一行加入数组中
                ii=$[$ii+1]                        #数组下标自增
        done    
        echo "${aa[@]}"                            #输出数组元素
        first=$[$first+1]                          #获取原文件下一列的内容
done

 

【效果】

[root@localhost leetcode]# cat file.txt
2 r r t
3 f g t
[root@localhost leetcode]# ./zzwj.sh
2 3
r f
r g
t t

【脚本逻辑】:

1、获取文件file.txt的第一列内容,并将其存入到一个数组中,此时需要使用循环给数组赋值;然后输出数组中的所有元素;

2、获取文件file.txt的第二列内容,执行同样的操作

3、笔者原计划是使用"echo -n "$item " "来输出每一列的内容,但"$item "是有一个空隔,效果是不一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值