小编Ior*_*ppi的帖子

删除回车符 (^M) 后的所有换行符并连接行

编辑:既然我得到了答案,我标记了@KamilMaciorowski 的一个更适合标题的答案,但@oliv 的这个答案实际上更适合我的主要目的的实际需要。(在 awk 上一致地处理带中断的 csv 文件。)

因此,如果您在类似的情况下寻找 awking,我建议您先检查一下!


请帮我准备几千个 csv 文件以供awk处理!某些字段在字段内有换行符,这导致将awk它们作为多个记录进行处理。然而,这些有问题的换行符只发生在插入 ^M 的地方,所以我只需要从所有这些换行符中完全删除 ^M 和换行符。

*这些^Ms 确实是换行符,而不是文字插入符和字母 M 字符串。该文件是为 .net 解析和处理而生成的,但我没有在文件生成/读取端开发应用程序,所以我真的不知道它是如何成功解析的。它专门用于某些列中具有多行字符串(注释)的字段。

那么如何制作这个(带有 1 个标题和 2 个记录的 csv。某些字段中有换行符,前面有 ^M):

"header_1", "header_2", "header_3"
"1-1", "1-2", "1-3"
"2-1", "2-2_a^M
2-2_b^M
2-2_c", "2-3"
Run Code Online (Sandbox Code Playgroud)

像这样?(带有 1 个标题和 2 个记录的 csv,每个记录中都没有换行符。):

"header_1", "header_2", "header_3"
"1-1", "1-2", "1-3"
"2-1", "2-2_a2-2_b2-2_c", "2-3"
Run Code Online (Sandbox Code Playgroud)

我尝试删除它们,sed但我听说没有办法处理,而且我不太明白原因。

for file in *.csv; do
    sed -e "s/^M//" $file > sedded/$file;
done …
Run Code Online (Sandbox Code Playgroud)

bash csv sed

2
推荐指数
1
解决办法
6086
查看次数

标签 统计

bash ×1

csv ×1

sed ×1