Ste*_*ner 4 unix linux bash split cut
我熟悉linux中的split命令.如果我有一个100行长的文件,
split -l 5 myfile.txt
Run Code Online (Sandbox Code Playgroud)
...将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
Run Code Online (Sandbox Code Playgroud)