运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

在Linux中按列拆分分隔文件到较小的文件

运维开发网 https://www.qedev.com 2020-07-05 12:49 出处:网络
我熟悉 linux中的split命令.如果我有一个100行长的文件, split -l 5 myfile.txt …将myfile.txt拆分为20个文件,每个文件有5行,并将它们写入文件.
我熟悉 Linux中的split命令.如果我有一个100行长的文件,

split -l 5 myfile.txt

…将myfile.txt拆分为20个文件,每个文件有5行,并将它们写入文件.

我的问题是,我想通过专栏来做这件事.给定一个包含100列的文件,制表符分隔,是否有类似的命令将此文件拆分为20个较小的文件,每个文件有5列和所有行?

我知道如何使用剪切,但我希望有一个简单的UNIX命令,我从来没有听说过,如果不用perl或其他东西包裹剪切就可以实现这一点.

提前致谢.

#!/bin/bash

(($# == 2)) || { echo -e "\nUsage: $0 <file to split> <# columns in each split>\n\n"; exit; }

infile="$1"

inc=$2
ncol=$(awk 'NR==1{print NF}' "$infile")

((inc < ncol)) || { echo -e "\nSplit size >= number of columns\n\n"; exit; }

for((i=0, start=1, end=$inc; i < ncol/inc + 1; i++, start+=inc, end+=inc)); do
  cut -f$start-$end "$infile" > "${infile}.$i"
done

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号