gpt4 book ai didi

linux - 如何将我的文件拆分成多个文件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:45 25 4
gpt4 key购买 nike

我想将一个文件拆分成多个文件。我的输入是

Report : 1
ABC
DEF
GHI
JKL
End of Report
$
Report : 2
ABC
DEF
GHI
JKL
$
Report : 2
ABC
DEF
GHI
JKL
End of Report
$
Report : 3
ABC
DEF
GHI
JKL
End of Report
$

输出应该是:

文件 1

Report : 1
ABC
DEF
GHI
JKL
End of Report
$

文件 2

Report : 2
ABC
DEF
GHI
JKL
$
Report : 2
ABC
DEF
GHI
JKL
End of Report
$

文件 3

Report : 3
ABC
DEF
GHI
JKL
End of Report
$

我试过了

awk '{print $0 "Report :"> "/tmp/File" NR}' RS="END OF" test.txt

但我没有得到适当的输出。

如有任何指导,我们将不胜感激。

最佳答案

你可以尝试类似的东西

$awk '/^Report/{filename++} {print > "FILE"filename}' input

测试

$awk '/^Report/{filename++} {print > "FILE"filename}' input

$ cat FILE1
Report : 1
ABC
DEF
GHI
JKL
End of Report
$

$ cat FILE2
Report : 2
ABC
DEF
GHI
JKL
$
Report : 2
ABC
DEF
GHI
JKL
End of Report
$

$ cat FILE3
Report : 3
ABC
DEF
GHI
JKL
End of Report
$

它的作用

  • /^Report/ 模式适用于以 Report 开头的行,同一行第三列中的数字是必须使用的文件名作为接下来几行的文件名

  • {filename++} 将文件名值加一

  • {print > "FILE"filename} 将每一行打印到文件中。

    例如,如果 filename1 那么这一行与

    相同
    print > FILE1

    这是输出重定向,与bash等中使用的重定向相同。

    请注意,如果缺少 print 属性,则 awk 会打印整条记录。这和写 print $0 > "FILE"filename

  • 是一样的

关于linux - 如何将我的文件拆分成多个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27777097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com