gpt4 book ai didi

linux - 如何在 Linux 中根据记录数拆分定界文本文件,该文件在数据字段中具有记录结尾分隔符

转载 作者:太空宇宙 更新时间:2023-11-04 09:18:22 25 4
gpt4 key购买 nike

问题陈述:

我有一个从 Teradata 卸载的带分隔符的文本文件,它在数据字段中恰好有“\n”(换行符或 EOL 标记)。

对于一整行或记录,相同的 EOL 标记位于每个新行的末尾。

我需要将此文件拆分为两个或多个文件(基于我没有给出的记录),同时在数据字段中保留换行符,但要防止每行末尾的换行符。

例子:

1|Alan
Wake|15
2|Nathan
Drake|10
3|Gordon
Freeman|11

期望:

file1.txt

1|Alan
Wake|15
2|Nathan
Drake|10

file2.txt

3|Gordon
Freeman|11

我尝试过的:

 awk 'BEGIN{RS="\n"}NR%2==1{x="SplitF"++i;}{print > x}' inputfile.txt

代码无法区分数据字段换行符和实际换行符。有什么办法可以实现吗?

编辑::我已经用例子改变了问题陈述。请分享您对新示例的看法。

最佳答案

使用以下awk方法:

awk '{ r=(r!="")?r RS $0 : $0; if(NR%4==0){ print r > "file"++i".txt"; r="" } }
END{ if(r) print r > "file"++i".txt" }' inputfile.txt
  • NR%4==0 - 您的逻辑单行占用两个物理记录,因此我们希望每 4 个记录分开

结果:

> cat file1.txt 
1|Alan
Wake
2|Nathan
Drake

> cat file2.txt 
3|Gordon
Freeman

关于linux - 如何在 Linux 中根据记录数拆分定界文本文件,该文件在数据字段中具有记录结尾分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44586923/

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