gpt4 book ai didi

regex - 如何使用正则表达式/终端工具删除 csv 单元格内的换行符?

转载 作者:行者123 更新时间:2023-12-04 23:42:21 24 4
gpt4 key购买 nike

我有一个 csv 文件,其中一些单元格里面有换行符。例如:

id,name 
01,"this is
with newline"
02,no newline

我想删除单元格内的所有换行符。

在事先不知道列数的情况下,如何使用正则表达式或其他终端工具进行一般处理?

最佳答案

这实际上是一个比看起来更难的问题,在我看来,这意味着 regex不是正确的解决方案。因为您正在处理引用/转义字符串,跨越多个“行”,您最终会得到一个复杂且难以阅读的内容 regex . (这不是不可能,只是有点乱)。

我建议改为 - 使用解析器。 Perl 在 Text::CSV 中有一个它有点像这样:

#!/usr/bin/env perl

use strict;
use warnings;

use Text::CSV;

my $csv = Text::CSV->new( { binary => 1, eol => "\n" } );

while ( my $row = $csv->getline( \*ARGV ) ) {
s/\n/ /g for @$row;
$csv->print( \*STDOUT, $row );
}

这会将文件作为管道输入/在命令行中指定 - 这就是 \*ARGV确实 - 这是一个特殊的文件句柄,可让您执行...基本上是什么 sed做:
somecommand.sh | myscript.pl
myscript.pl filename_to_process
ARGV文件句柄会自动执行。 (如果您愿意,您可以明确打开文件或使用 \*STDIN)

关于regex - 如何使用正则表达式/终端工具删除 csv 单元格内的换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33994244/

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