当前位置: 首页 > 面试题库 >

如何分割文件并在每一部分中保持第一行?

姬俊驰
2023-03-14
问题内容

给定: 一个大文本数据文件(例如CSV格式),第一行带有“特殊”行(例如字段名称)。

想要的: 与coreutils split -l命令等效,但另外的要求是原始文件的标题行必须出现在每个结果片段的开头。

我猜想会合splithead为之吗?


问题答案:

这是 robhruska的 脚本,整理了一下:

tail -n +2 file.txt | split -l 4 - split_
for file in split_*
do
    head -n 1 file.txt > tmp_file
    cat "$file" >> tmp_file
    mv -f tmp_file "$file"
done

我删除wccutls以及echo在他们不必要的地方。我更改了一些文件名,使它们更有意义。我将其分成多行只是为了使其更易于阅读。

如果想花哨的话,可以使用mktemptempfile创建一个临时文件名,而不使用硬编码的文件名。

编辑

使用GNU split可以做到这一点:

split_filter () { { head -n 1 file.txt; cat; } > "$FILE"; }; export -f split_filter; tail -n +2 file.txt | split --lines=4 --filter=split_filter - split_

出于可读性而细分:

split_filter () { { head -n 1 file.txt; cat; } > "$FILE"; }
export -f split_filter
tail -n +2 file.txt | split --lines=4 --filter=split_filter - split_

--filter定时split运行用于每个输出文件的命令(在此情况下的函数,其必须导出)并设置变量FILE,在命令的环境,到文件名。

过滤器脚本或函数可以对输出内容甚至文件名进行所需的任何操作。后者的示例可能是输出到可变目录中的固定文件名:> "$FILE/data.dat"例如。



 类似资料:
  • 问题内容: 我有一个巨大的文本文件(〜1GB),可惜我使用的文本编辑器无法读取这么大的文件。但是,如果我可以将其分为两部分或三部分,那就没问题了,因此,作为练习,我想用python编写一个程序来做到这一点。 我想让程序执行的操作是找到文件的大小,将该数字分成多个部分,然后对于每个部分,逐块读取至该点,写入 文件名.nnn输出文件,然后读取- 到下一个换行符并将其写入,然后关闭输出文件,等等。显然,

  • 问题内容: 这是解释此问题的最简单方法。这是我正在使用的: 这就是我想要的: 原因是我想将字符串拆分为标记,对其进行操作,然后再次将其放回原处。 问题答案:

  • 问题内容: 我想从特定的行号中拆分一个400k行长的日志文件。 对于这个问题,让我们将其设为任意数字300k。 是否有Linux命令允许我执行此操作( 在脚本内 )? 我知道可以按大小或行号将文件分成相等的部分,但这不是我想要的。我想要一个文件中的前300k,第二个文件中的最后100k。 任何帮助,将不胜感激。谢谢! 再三考虑,这将更适合于超级用户或服务器故障站点。 问题答案: file_name

  • 监督学习(Supervised learning) 咱们先来聊几个使用监督学习来解决问题的实例。假如咱们有一个数据集,里面的数据是俄勒冈州波特兰市的 $47$ 套房屋的面积和价格: 居住面积(平方英尺) 价格(千美元) $2104$ $400$ $1600$ $330$ $2400$ $369$ $1416$ $232$ $3000$ $540$ $\vdots$ $\vdots$ 用这些数据来投

  • 我在Codeigniters分页类中遇到一些问题。 问题是“第1页”仍然是粗体的,即使URL发生了变化。 我的url如下所示: http://mypage.com/s/searchstr/4/1 uri- 我已经将$config['uri_segment']=4;正如您在下面的代码中看到的。 有人知道代码有什么问题吗? 非常感谢。

  • 我将列的一些数据保存如下: 我需要的是所有的中文单词,我们不需要英文单词和'-',但不是所有的值都是带和英文单词的,所以我不能用SQL下面,有没有人知道怎么实现?