加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 按列拆分分隔文件到较小的文件

发布时间:2020-12-13 23:55:22 所属栏目:Linux 来源:网络整理
导读:我熟悉 linux中的split命令.如果我有一个100行长的文件, split -l 5 myfile.txt …将myfile.txt拆分为20个文件,每个文件有5行,并将它们写入文件. 我的问题是,我想通过专栏来做这件事.给定一个包含100列的文件,制表符分隔,是否有类似的命令将此文件拆分为20个
我熟悉 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>nn"; exit; }

infile="$1"

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

((inc < ncol)) || { echo -e "nSplit size >= number of columnsnn"; 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读