【问题标题】:Split a large file into smaller files using awk with numeric suffix使用带数字后缀的 awk 将大文件拆分为较小的文件
【发布时间】:2020-10-04 00:38:20
【问题描述】:

我使用的是 AIX,其中 split 没有“-d”标志,它将在拆分后为较小的文件添加编号后缀。

在单行中执行此操作的唯一选择是使用 AWK。

我有一个大文件“main.txt”,我希望它们分开并有 2 位数字后缀:

我能做什么:

$ split -l 10 main.txt main_
main_a
main_b
main_c

我想要的是:

main_01
main_02
main_03

【问题讨论】:

  • 你在运行哪个shell?
  • 我使用 korn shell "-ksh"
  • AIX 上是否默认安装 perl ?

标签: shell unix awk split aix


【解决方案1】:
awk '(NR%10) == 1{close(out); out=sprintf("main_%02d",++c)} {print > out}' file

或使用您的输入文件名作为输出文件的基础:

awk '
    NR==1 { base=FILENAME; sub(/\.[^.]*$/,"",base) }
    (NR%10) == 1 { close(out); out=sprintf("%s_%02d",base,++c) }
    { print > out }
' file

【讨论】:

  • 谢谢。我正要跟进这个问题,但你已经回答了。 :)
猜你喜欢
  • 2016-09-06
  • 1970-01-01
  • 2012-08-13
  • 2019-01-19
  • 1970-01-01
  • 2012-06-06
  • 1970-01-01
  • 1970-01-01
  • 2012-06-26
相关资源
最近更新 更多