gpt4 book ai didi

csv - 替换csv文件字段中的换行符

转载 作者:行者123 更新时间:2023-12-02 21:15:53 26 4
gpt4 key购买 nike

我有一个包含 165 列的 CSV 文件,但我遇到了问题。我需要将 \r\n 字符替换为列中的空格,而不是行尾的空格,因为它是记录分隔符。

输入:

001|Baker St.
London|3|4|7
002|Penny Lane
Liverpool|88|5|7

输出:

001|Baker St. London|3|4|7
002|Penny Lane Liverpool|88|5|7

我正在使用 Windows 脚本,但我愿意使用 UnxTools(gawk、sed、tr) 或任何需要的东西。

最佳答案

因此您需要对多行字段进行分组。在这种情况下,让我们手动存储字符串,直到它“足够大”,也就是说,直到它有足够的字段来知道记录是完整的:

awk -F"|" -v fields=5 '{f+=NF; str=(str?str OFS:"") $0}
f>=fields{print str; str=""; f=0}' file

使用-v fields=5,我们指示正确的行应包含多少个字段。然后,我们继续将数据存储在 str 变量中,直到它至少有 fields 字段。

另请注意,您正在使用 Windows 文件。要在 UNIX 中正常工作,请首先使用 dos2unix 文件 将其转换为此格式。这会将 \r\n 转换为 \n

测试

$ awk -F"|" -v fields=5 '{f+=NF; str=(str?str OFS:"") $0} f>=fields{print str; str=""; f=0}' file
001|Baker St. London|3|4|7
002|Penny Lane Liverpool|88|5|7

(旧版本,当您看起来需要删除文字 \r\n 时)

只需确保 \r\n 之后出现某些内容,以便行尾不匹配:

$ sed -r 's/\\r\\n(.)/ \1/g' file
001|Baker St. London|3|4|7\r\n
002|Penny Lane Liverpool|88|5|7\r\n

这会查找 \r\n 加上另一个内容,并在空格后打印该其他内容。

关于csv - 替换csv文件字段中的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30640436/

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