Split

拆分:如何拆分成不同的百分比?

  • September 11, 2018

如何使用 split 命令將文本文件拆分為 70% 和 30%?

以下命令適用於 50% 以上的百分比(如果您只想拆分為兩個文件),快速而骯髒的方法。

  1. 根據行拆分 70%
split -l $[ $(wc -l filename|cut -d" " -f1) * 70 / 100 ] filename 
  1. 根據字節拆分 70%
split -b $[ $(wc -c filename|cut -d" " -f1) * 70 / 100 ] filename

您可以使用csplit分成兩部分(使用任何百分比),例如第一部分 - 前 20% 的行,第二部分 - 其餘 80% 的行:

csplit infile $(( $(wc -l < infile) * 2 / 10 + 1))

$(wc -l < infile):總行數

2 / 10:百分比

+1:添加一行,因為csplit拆分up to but not including line N

但是,您只能根據行進行拆分。

基本上,只要您有行號,$(( $(wc -l < file) * 2 / 10))您就可以使用任何面向行的工具:

sed 1,$(( $(wc -l < infile) * 2 / 10))'{
w 20-infile
d
}' infile > 80-infile

或者,更酷:

{ head -n$(( $(wc -l < infile) * 2 / 10)) > 20-infile; cat > 80-infile; } <infile

雖然有些heads 很愚蠢並且不符合標準,所以這不適用於所有設置……

引用自:https://unix.stackexchange.com/questions/10219