无法使用 cat 查看“split”输出文件

无法使用 cat 查看“split”输出文件

文件a.txt包含:

1 one
2 two
3 three
4 four
5 five
6 six

然后命令:产生三个新文件, ,split -2 a.txt output_作为输出output_aaoutput_aboutput_ac

当我输入:cat output_aa我收到一条消息:no such file or directory

但我可以output_aa在gedit中查看。

为什么?

答案1

man split部分说:

将固定大小的 INPUT 输出到 PREFIXaa、PREFIXab、...

其中PREFIX是最后一个命令行参数(output_,在您的情况下)。因此,输出文件将被命名为output_aa,output_ab和 ,output_ac分为三个部分,每个部分两行。

这也是我看到的行为。

所以你无法读取的原因output_a是它不存在,除非你自己单独创建它。

如果您希望仅使用单字母前缀来命名文件并且已经运行 split,您可以重命名它们。假设是 bash,你可以使用它变量重整功能删除后缀的第一个字符。请注意,这可能会创建重复项(在这种特殊情况下不会,但在一般情况下可能会):

for f in output*; do echo mv "${f}" "${f%a?}${f##output_?}"; done

目标名称表达式的第一部分从文件名末尾删除a?(其中是任意一个字符),仅保留前缀;?第二部分从开头删除output_?(同样是任何一个字符)并附加其余部分。?结果是删除后缀的第一个字符。

当您对这满足您的要求感到满意时,请删除echo.

如果你可以接受重新运行split,GNU coreutils(至少 8.5)split有一个选项--suffix-length允许您指定后缀的长度。只需将其添加到您的命令行并使用适当的值即可:

split -2 --suffix-length=1 a.txt output_

这给出了output_aoutput_boutput_c,如所期望的。谢谢@don_crissti指出这一点。

相关内容