gpt4 book ai didi

perl - 什么脚本可以帮助解析一组错误换行的行?

转载 作者:行者123 更新时间:2023-12-02 21:45:19 27 4
gpt4 key购买 nike

我有一组通话记录,最初来自(格式不良)PDF。问题是,当放置在文本编辑器中时,每条记录会跨多行显示。数据似乎在字段中间“自动换行”。但是,有足够的结构,我认为脚本可以检测并修复错误换行的行(通过修复,我的意思是脚本将所有记录的数据放在一行上,而不是跨多行排列)。

输入示例:

8/21/201  
3
08:4
8
817817935300 39 Inbound ARLINGTON 0:01 3001
8/21/201
3
08:5
2
816036924529 26 Inbound WINTHROP 0:06 3001
8/21/201
3
09:3
1
814697446313 48 Inbound SHINGLEHSE 0:01 7800

对于这三个记录,输出应该为:

8/21/2013 08:48 8178179353 39 Inbound ARLINGTON 0:01 3001  
8/21/2013 08:52 8160369245 26 Inbound WINTHROP 0:06 3001
8/21/2013 09:31 8146974463 48 Inbound SHINGLEHSE 0:01 7800

我不偏爱任何特定的方法。看起来 awk、sed 或 Perl 中的任何一个都可能是好的开始,我在脚本编写方面太新手,无法及时解决这个问题。

我试图在 Excel/VBA 中利用的一种模式是每条记录都以日期戳开头,因此每条记录都包含在从日期戳开始到之前<之前的一行结束的行“ block ”中/strong> 下一个日期戳。我的代码不够健壮,无法处理它,而且 future 可能会出现问题,我认为 awk/sed/Perl 脚本可能更适合处理。

最佳答案

既然您告诉我们每条记录都包含在从日期戳开始到下一个日期戳之前的一行结束的行“ block ”中:

$ awk -v OFS='\t' '
/^[[:digit:]]{1,2}\/[[:digit:]]{1,2}\/[[:digit:]]{1,4}/ {
if (rec) print rec
rec=""
}
{ rec = rec (rec?OFS:"") $0 }
END {if (rec) print rec }
' file
8/21/201 3 08:4 8 817817935300 39 Inbound ARLINGTON 0:01 3001
8/21/201 3 08:5 2 816036924529 26 Inbound WINTHROP 0:06 3001
8/21/201 3 09:3 1 814697446313 48 Inbound SHINGLEHSE 0:01 7800

按照您认为合适的方式设置OFS

关于perl - 什么脚本可以帮助解析一组错误换行的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19644165/

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