如果用双引号引起来,awk上的逗号分隔字符串将忽略

cccnrc

我知道这听起来可能在线上有2000个答案,但是我没有找到针对此特定情况(例如-vFPAT 此答案和其他答案)的答案,因为我需要与之保持联系split我必须用awk拆分CSV文件,其中双引号内可能有一些值。我需要告诉split函数是否忽略,内部""以便获取元素数组。

这是我根据其他答案尝试的示例

cat try.txt

Hi,I,"am,your",father
maybe,you,knew,it
but,"I,wanted",to,"be,sure"


cat tst.awk

BEGIN {}
{
    n_a = split($0,a,/([^,]*)|("[^"]+")/);
    for (i=1; i<=n_a; i++) {
        collecter[NR][i]=a[i];
    }
}
END {
    for (i=1; i<=length(collecter); i++)
    {
        for (z=1; z<=length(collecter[i]);z++)
        {
            printf "%s\n", collecter[i][z];
        }
    }
}

但没有运气:

awk -f tst.awk try.txt 

,
,
,


,
,
,


,
,
,

我根据其他类似的答案尝试了其他正则表达式,但在这种情况下均不起作用。

请注意:双引号字段可能不存在,可能不止一个,并且没有固定的位置/长度!

在此先感谢您的帮助!

贾斯

gnu awk有一个称为的功能patsplit,可让您使用FPAT模式进行分割

$ awk '{ print "RECORD " NR ":"; n=patsplit($0, a, "([^,]*)|(\"[^\"]+\")"); for (i=1;i<=n;++i) {print i, "|" a[i] "|"}}' file
RECORD 1:
1 |Hi|
2 |I|
3 |"am,your"|
4 |father|
RECORD 2:
1 |maybe|
2 |you|
3 |knew|
4 |it|
RECORD 3:
1 |but|
2 |"I,wanted"|
3 |to|
4 |"be,sure"|

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用双引号引起来时忽略逗号

连接用引号引起来的逗号分隔的字符串(给定包含这些字符串的结构的列表)

请给RegEx帮助-用引号引起来的字符串中包含双引号

分割包含连续逗号和用引号引起来的逗号的字符串

ASP.NET Core API发送用双引号引起来的字符串

用双引号引起来的字符串拆分问题

用引号引起来的字符串处理引号

Python:用空格分隔的字符串的每个词都用引号引起来

php:字符串被双引号引起来,而不是单引号引起来。怎么修?

如何将逗号分隔的字符串转换为字符串,且每个字符串都用单引号引起来并用逗号分隔

从字符串中删除所有未用单引号或双引号引起来的空格

使用util.format,在数组中的每个字符串周围用双引号引起来

将JSON字符串传递给Azure CLI时,期望属性名称用双引号引起来(来自PowerShell)

转到:用逗号分隔字符串,但忽略双引号内的逗号

用逗号分隔字符串,但使用Javascript忽略双引号内的逗号

exec用双引号引起来

用双引号引起来

Perl-DBI字符串错误地被双引号引起来

使用JavaScript提取由数字无关的双引号引起来的子字符串

解析文本类型日志文件,其值用双引号引起来并用逗号分隔

正则表达式拆分逗号分隔符值,用双引号引起来

逗号分隔列表中的匹配项,不被单引号或双引号引起来

cat bash命令将制表符转换为逗号分隔并用双引号引起来

awk输入字段分隔符,并打印所有用双引号引起来的变量

SQLException:字符串'''后的右引号引起来

Python查找用单引号引起来的字符串

检查字符串是否用单引号引起来Javascript

字符串扩展-用引号引起来的变量转义为值

通过Web API发送的字符串用引号引起来