如何连接循环分割的文件?
How to concatenate files split by round robin?
我使用 split -n r/12 file
拆分了一个文件,现在如何连接这 12 个文件?我试过 cat <files>
和 paste <files>
,但在使用 diff 后,整个文件与原始文件不同。
如何连接这 12 个文件,以便 cmp/diff 不会显示差异?要使用 paste/cat 的任何特殊参数?
循环拆分是绝对要求吗?如果不是,你可能只是分成几个部分:
$split --number=12 file
这将创建 12 个文件:
$ ls x*
xaa xab xac xad xae xaf xag xah xai xaj xak xal
现在你可以毫无区别地连接:
$cat x* > file.new
$diff file file.new
但如果没有办法绕过循环法要求,我会创建一个 bash 脚本——不太好。只是提供一个伪代码
类似于:
Create working directory
Copy all x* files into working directory
Change to working directory
Touch new concatenated file
While all x* files are not empty
Iterate over files in alpha order
Remove the first line in file
Append the line to the new concatenated file
我使用 split -n r/12 file
拆分了一个文件,现在如何连接这 12 个文件?我试过 cat <files>
和 paste <files>
,但在使用 diff 后,整个文件与原始文件不同。
如何连接这 12 个文件,以便 cmp/diff 不会显示差异?要使用 paste/cat 的任何特殊参数?
循环拆分是绝对要求吗?如果不是,你可能只是分成几个部分:
$split --number=12 file
这将创建 12 个文件:
$ ls x*
xaa xab xac xad xae xaf xag xah xai xaj xak xal
现在你可以毫无区别地连接:
$cat x* > file.new
$diff file file.new
但如果没有办法绕过循环法要求,我会创建一个 bash 脚本——不太好。只是提供一个伪代码
类似于:
Create working directory
Copy all x* files into working directory
Change to working directory
Touch new concatenated file
While all x* files are not empty
Iterate over files in alpha order
Remove the first line in file
Append the line to the new concatenated file