【问题标题】:How to split this txt file into small files using shell scripting?如何使用 shell 脚本将此 txt 文件拆分为小文件?
【发布时间】:2013-08-05 12:43:37
【问题描述】:

我想将一个 txt 文件拆分成小文件。但是,我不知道如何使用 shell 编写脚本。如果有人可以提供帮助,将不胜感激!

我想这样拆分的文件:

name    Onsetime    duration    weight
s002_run1_fng   122.6 2 1
s002_run1_fng   144.8 2 1
s002_run1_fyg   132.6 2 1
s002_run1_fyg   182.6 2 1
s002_run1_fyg   198.6 2 1
s002_run1_fyg   230.6 2 1
s002_run1_fyg   308.6 2 1
s002_run1_fyg   368.6 2 1
s002_run1_fyg   382.6 2 1
s002_run1_fyg   410.6 2 1
s002_run1_fnl   294.8 2 1
s002_run1_fnl   394.8 2 1
s002_run1_fyl   66.6 2  1
s002_run1_fyl   78.6 2  1
s002_run1_fyl   158.6 2 1
s002_run1_fyl   207.1 2 1
s002_run1_fyl   257.4 2 1
s002_run1_fyl   269.2 2 1
s002_run1_fyl   319.2 2 1
s002_run1_fyl   327.3 2 1
s002_run1_fnn   52.8 2  1
s002_run1_fnn   280.7 2 1
s002_run1_fnn   350.8 2 1
s002_run1_fyn   96.6 2  1
s002_run1_fyn   110.6 2 1
s002_run1_fyn   169.3 2 1

我想把文件拆分成新的txt文件,第一列是新文件的名称,第二到第四列是新文件的内容。如果第一列相同,则第二到第四列将组成一个新文件。比如第一个文件的内容是

122.6 2 1
144.8 2 1

新文件名将是“s002_run1_fng

如何使用 shell 进行编码?

谢谢!非常感谢您的帮助!

【问题讨论】:

  • 嗯,SO 并不是一个只提供代码的地方,所以,一些初学者:您需要遍历当前的文本文件;在循环中,按空格拆分列,创建文件,将内容打印到该文件,然后关闭文件

标签: file shell awk split


【解决方案1】:

awk one-liner 可以做你想做的事,试试看:

awk 'NR>1{print $2,$3,$4 > $1}' file

【讨论】:

  • 是的,您的代码有效!伟大的!非常感谢!或者我已经手动完成了。这太耗时了。但是,还有另一个问题。当我运行你提供的代码时,终端说: awk: s002_run3_fyn make too many open files input record number 87, file feedback.txt source line number 1 它只生成了17个文件。我怎么解决这个问题?非常感谢!
  • @Yangmei 很高兴为您提供帮助。对于打开文件过多的问题,您可以尝试以下操作:首先从上次运行中删除所有生成的文件,如果有的话。然后执行awk 'NR>1{print $2,$3,$4 >> $1;close( $1)}' file
  • 非常感谢您的帮助!代码有效!工作在两秒钟内完成。我非常感谢!但是,当我对具有相似结构的文件使用相同的代码时,它不起作用。终端没有报错,但是没有生成文件。能再帮帮我吗?谢谢!名称预期持续时间重量s002_run1_ag 116.761 2 1 s002_run1_ag 128.755 2 1 s002_run1_ag 138.763 2 1 s002_run1_ag 178.762 2 1 s002_run1_ag 190.771 2 1 s002_run1_ag 226.75 2 1 s002_run1_ag 304.764 2 1 s002_run1_ag 360.759 2 1 s002_run1_ag 374.77 2 1 s002_run1_ag 404.761 2 1 跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-11
  • 1970-01-01
  • 2011-06-24
  • 2022-10-15
  • 1970-01-01
  • 1970-01-01
  • 2012-03-26
相关资源
最近更新 更多