You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IICS加载含换行符的管道分隔文件问题及脚本优化需求

处理带换行和英寸符号的管道分隔CSV文件

我们有一个以双引号作为字段限定符的管道分隔CSV文件,部分文本字段包含换行符和代表英寸的"符号。用IICS加载数据时,带换行符的文本列会被识别为多行,需要将文本列内的换行符替换为空格,同时批量转义英寸符号。之前尝试的gawk命令未解决问题:

gawk -v RS='"' 'NR % 2 == 0 {gsub(/[/\n]/, "") } { printf("%s%s", $0, RT) }' output2.csv > output3.csv

场景1:文本含英寸符号的处理

原始数据

"col1"|"col2"|"col3"|"col4"
"2002-04-09 00:00:00"|"True"|"2023 - (1) FA L-shape desk (left-handed)
2023 - (1) 29" credenza for BOA, (1) custom 66" BOA A2 workstation with HA bridge (left-handed)
2023 - (1) 42" round table
2023 - (5) Rein guest chairs in hashtag fabric"|"5"

原命令执行后,换行符被移除但英寸符号"变为"",且最后一个字段的闭合引号丢失,不符合CSV规范。

场景2:文本含特殊字符的换行处理

原始数据

"col1"|"col2"|"col3"|"col4"
"2020-06-30 00:00:00"|"False"|"STANDARD:
2008 1-Endura FA Workstation
2008 1-Endura BOA Workstation with Lateral File Cabinet
2021 2-Zonal Task Chairs "|"4"

原命令执行后无变化,字段内换行符未被替换,仍导致多行识别问题。

修正后的解决方案

使用以下gawk命令,精准识别双引号包裹的字段内部内容,同时完成换行符替换和英寸符号转义:

gawk -v RS='"' '
    NR % 2 == 0 {
        gsub(/\n/, " ");   # 将字段内换行符替换为空格
        gsub(/"/, "\"\""); # 转义字段内的双引号(符合CSV规范)
    }
    { printf "%s%s", $0, RT }
' input.csv > output.csv

场景1处理效果

执行后输出:

"col1"|"col2"|"col3"|"col4"
"2002-04-09 00:00:00"|"True"|"2023 - (1) FA L-shape desk (left-handed) 2023 - (1) 29"" credenza for BOA, (1) custom 66"" BOA A2 workstation with HA bridge (left-handed) 2023 - (1) 42"" round table 2023 - (5) Rein guest chairs in hashtag fabric"|"5"
  • 字段内换行符全部替换为空格,保持单行结构
  • 英寸符号"转义为"",不破坏字段边界

场景2处理效果

执行后输出:

"col1"|"col2"|"col3"|"col4"
"2020-06-30 00:00:00"|"False"|"STANDARD: 2008 1-Endura FA Workstation 2008 1-Endura BOA Workstation with Lateral File Cabinet 2021 2-Zonal Task Chairs "|"4"
  • 字段内换行符替换为空格,合并为单行
  • 冒号、连字符等特殊字符不影响处理逻辑

内容的提问来源于stack exchange,提问作者pavan kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 23:05:00