Perl - "/"导致用逗号分割的问题

yon*_*age -1 perl

我正在尝试用","拆分文件.这是一个CSV文件.

但是,一个"列"的值包含"/"和空格.而且它似乎对该列感到不满,并且在该列之后不会打印任何内容,而是移动到下一行.

我的代码很简单:

perl -lane '@values = split(",",$F[0]);  print $values[0]."\t".$values[3];' basefile.txt > newfile.txt
Run Code Online (Sandbox Code Playgroud)

basefile.txt看起来像:

"1","text","abc // 123 /// some more text // text","filename1"
"2","text","abc // 123 /// some more text // text","filename2"
"3","text","abc // 123 /// some more text // text","filename3"
Run Code Online (Sandbox Code Playgroud)

我的newfile.txt应该有一个输出:

"1","filename1"
"2","filename2"
"3","filename3"
Run Code Online (Sandbox Code Playgroud)

相反,我得到:

"1",
"2",
"3",
Run Code Online (Sandbox Code Playgroud)

谢谢!

Tan*_*lus 5

这不是/令人困惑的perl,它是与-a旗帜相结合的空间.尝试:

perl -lne '@values = split(",",$_); print $values[0]."\t".$values[3]' basefile
Run Code Online (Sandbox Code Playgroud)

或者,更好的是,使用Text :: CSV_XS进行拆分.

  • 重新"*使用Text :: CSV_XS进行拆分*",这是唯一有效的答案.OP显然已经正确地引用了CSV(例如`1,'foo,bar",..`),`split`(或`-a`)会搞砸 (4认同)
  • 或者指定`-F,`并使用`@F`代替`@ values`. (2认同)