linux 获取文件列数并转置行列

标题获取文件列数的两种实现方式

原始文件内容

在这里插入图片描述

一、使用awk

#  获取每一行列数
awk '{print NF}' file.txt 
# 获取最长列数
cat file.txt |awk '{print NF}' |sort -nrk1|head -1
# 获取最短列数
cat file.txt |awk '{print NF}' |sort -nk1|head -1

二、使用wc命令

# 获取列数,wc -w 不会识别换行,因此只能单行识别
cat file.txt |head -1|wc -w

三、列转行

# 所有数据转成一行
cat file.txt | xargs

四、将file.txt 的每一列转成行排列

# 第一种方法
line=`cat file.txt|awk '{print NF}'|head -n 1`
for n in `seq 1 ${line}`
do
   cat  file.txt |awk '{print $'''$n'''}' | xargs 
done


# 第二种方法
line=`cat file.txt|head -1|wc -w`
for n in `seq 1 ${line}`
do
   # 此处注意awk -v 的-v 参数 是为了把n的值传递到后面的print里,否则打印字符串
   cat  file.txt |awk -v n=$n '{print $n}' | xargs 
done
# 按列写入文件的方案也可以
cat file.txt |awk '{print $1}' >> res_file.txt
cat file.txt |awk '{print $2}' >> res_file.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值