gpt4 book ai didi

regex - 当文件可以包含带有换行符的数据或不带有换行符的数据时预览 csv 数据

转载 作者:行者123 更新时间:2023-12-04 18:56:54 27 4
gpt4 key购买 nike

用户可以上传两种类型的文件数据。请在下面找到示例数据

Sample 1:

Name mobile url message text
test11 1234567890 www.example.com "Data Test New
Date:27/02/2020
Items: 1
Total: 3
Regards
ABC DATa
Ph:091 : 123456789"
test12 1234567891 www.example.com hello

Sample2

test12 1234567891 www.example.com hello
test13 1234567892 www.example.com hi
test14 1234567893 www.example.com hi
用户文件可以有 2-3 百万条记录。所以我想为用户提供预览选项,用户可以预览他们上传文件的前 10 行。要获得前 10 行,我使用以下命令
awk -v RS='"[^"]*"' 'NR>10{exit} {gsub(/\r?\n/, "\\n", RT); ORS=RT} 1' test.csv 
当文件行具有双倍值时,它可以完美运行,但对于示例 2,它正在打印文件中的所有记录。
以下命令适用于样本 2,但不适用于样本 1
head -n10 test.csv | tr '^' ','
预期输出:
Sample1:

Name mobile url message text
test11 1234567890 www.example.com "Data Test New\nDate:27/02/2020\nItems: 1\nTotal: 3\nRegards\nABC DATa\nPh:091 : 123456789"
test12 1234567891 www.example.com hello

Sample 2:

test12 1234567891 www.example.com hello
test13 1234567892 www.example.com hi
test14 1234567893 www.example.com hi
我需要一个在这两种情况下都可以使用的命令

最佳答案

你可以试试这个gnu awk :

awk -v RS='("[^"]*")?\r?\n' 'NF {
ORS = gensub(/\r?\n(.)/, "\\\\n\\1", "g", RT)
++n
print
}
n == 10 {exit}' file
或单行:
awk -v RS='("[^"]*")?\r?\n' 'NF{ORS = gensub(/\r?\n(.)/, "\\\\n\\1", "g", RT);  ++n; print} n==2{exit}' file

关于regex - 当文件可以包含带有换行符的数据或不带有换行符的数据时预览 csv 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65274109/

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