gpt4 book ai didi

regex - 替换文件中的\n\t 模式

转载 作者:行者123 更新时间:2023-12-02 08:27:53 25 4
gpt4 key购买 nike

好的,我有一个用竖线分隔的记录集

我正在检查每行的分隔符数量,因为它们已经开始包括 |在数据中(我们无法更改传入文件)

在使用awk将坏记录解析成坏文件进行处理时,我们发现有些数据有一个换行符(\n)(后面是一个制表符(\t))

我曾尝试用 sed 将\n\t 替换为\t 但它总是将\n\t 更改为\r\n 或替换所有\n(文件为\r\n 用于行尾)

是的,回答下面的一些问题......

文件可以超过 200 mb

换行符在数据中是虚假的(不是每一行......但足以让人痛苦)

我试过了

sed ':a;N;$!ba;s/\n\t/\t/g' Clicks.txt >test2.txt

sed 's/\n\t/\t/g' Clicks.txt >test1.txt

样本记录

12345|876|测试数据\n
\t\t\t\tsome text|6209\r\n

想要12345|876|测试数据\t\t\t\tsome text|6209\r\n

请帮忙!!!

注意必须是 KSH(具体为 MKS KSH)

我不在乎它是否是 sed.. 只需要更正问题...

下面的几个解决方案在小数据上唤醒或完成部分工作......

顺便说一句,我已经开始尝试删除所有换行符,然后用回车换行符替换 caraige return .. 但也不能让它正常工作

我试过 TR 但因为它是单个字符,所以它只解决了部分问题

tr -d '\n' 测试.txt留给我一个\r 结束的文件....

需要将其设置为\r\n(并且此系统上不存在 dos2unix 或 unix2dos)

最佳答案

如果输入文件很小(因此您不介意处理两次),您可以使用

cat input.txt | tr -d "\n" | sed 's/\r/\r\n/g'

编辑:正如我现在应该知道的那样,您可以避免在任何地方使用 cat。我已经在 SO for UUOC 中查看了我的旧答案,并仔细检查了 tr 用法中可能的文件名。正如 Ed 在他的评论中指出的那样, cat 也可以在这里避免:

上面的命令可以改进

tr -d "\n" < input.txt | sed 's/\r/\r\n/g'

关于regex - 替换文件中的\n\t 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30333282/

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