Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
perl使用bak文件CSV进行一行编辑_Perl - Fatal编程技术网

perl使用bak文件CSV进行一行编辑

perl使用bak文件CSV进行一行编辑,perl,Perl,我有一个字段,如果csv文件中一行的第11个字段大于6个字符, 整个线路需要拆除 casoer@casperbox::/here/s/johnny$ head /come/and/play/with/us/danny.csv D,642,0642,RED,RUM,,M,,L,S,FOREVERRR,0,862, D,642,0642,RED,RUM,,M,,L,L,WONKY,13783,10196, D,642,0642,RED,RUM,,M,,L,L,WONKY,13783,10196, D

我有一个字段,如果csv文件中一行的第11个字段大于6个字符, 整个线路需要拆除

casoer@casperbox::/here/s/johnny$ head /come/and/play/with/us/danny.csv
D,642,0642,RED,RUM,,M,,L,S,FOREVERRR,0,862,
D,642,0642,RED,RUM,,M,,L,L,WONKY,13783,10196,
D,642,0642,RED,RUM,,M,,L,L,WONKY,13783,10196,
D,642,0642,RED,RUM,,M,,L,L,CRACK?g,221,188,
,642,0642,RED,RUM,,M,,L,L,CRACK?g,221,188,
D,642,0642,RED,RUM,,M,,S,S,TRIP,4169,2858,
D,642,0642,RED,RUM,,M,,S,S,TRIP,4169,2858,
D,642,0642,RED,RUM,,M,,S,S,WRIDE,450,450,
D,642,0642,RED,RUM,,M,,S,S,WRIDE,450,450,
D,642,0642,RED,RUM,,M,,L,L,FOOHK,157,157,
这很有效--

这将删除行“D,6420642,红色,RUM,,M,,L,S,Foreverr,0862,”

当我试着整理这个的时候-

casoer@casperbox::/here/s/johnny$ perl -p -i.bak -nle 'print unless /\,\w{7}\,/' /come/and/play/with/us/danny.csv
已创建.bak文件,但未从内嵌文件中删除“D、6420642、红色、RUM、M、L、S、Foreverr、0862”。 如果我们要让oneliner创建一个烘焙文件进行内联编辑,我想让oneliner创建一个烘焙文件。

要匹配7个或更多字符,您需要在7个字符后添加一个

包含
-p
会导致perl在循环的
继续
阶段中
打印$\ucode>,因此您将在不匹配的行上加倍

但是,为了仅匹配第11个字段,更适合在“,”上自动分割线并测试字段的长度:

perl-i.bak-F,-anwe'打印,除非长度$F[10]>6'

请记住,如果CSV不包含引号,则此命令只能作为一行行运行。如果您需要更多,您必须查看模块

要匹配7个或更多字符,您需要在7个字符后添加一个

包含
-p
会导致perl在循环的
继续
阶段中
打印$\ucode>,因此您将在不匹配的行上加倍

但是,为了仅匹配第11个字段,更适合在“,”上自动分割线并测试字段的长度:

perl-i.bak-F,-anwe'打印,除非长度$F[10]>6'


请记住,如果您的CSV不包含带引号的逗号,则这只能作为一行。如果您需要更多,您必须查看模块

因为您使用的是
-p
开关,它会覆盖
-n
开关,并为每一行输入生成输出


我敢打赌,您现在看到的是输入中大多数行的重复输出。

因为您使用的是
-p
开关,它覆盖
-n
开关,并为每一行输入生成输出


我敢打赌,您现在看到输入中的大多数行都有重复的输出。

我不知道为什么这两个行都可以工作<代码>\w{7}
与任何行都不匹配<代码>\w{7,}}/code>会的。我不知道为什么两者都应该工作<代码>\w{7}
与任何行都不匹配<代码>\w{7,}将匹配。当任何字段为7个字符或更长时,该正则表达式将匹配,而不仅仅是第11个字段
perl-i.bak-F,-anwe'打印,除非长度$F[10]>6'
或类似的更好。啊,是的,掩盖了第11个字段的位。更新应答器,当任何字段为7个字符或更长时,正则表达式将匹配,而不仅仅是第11个字段
perl-i.bak-F,-anwe'打印,除非长度$F[10]>6'
或类似的更好。啊,是的,掩盖了第11个字段的位。更新答案
casoer@casperbox::/here/s/johnny$ perl -p -i.bak -nle 'print unless /\,\w{7}\,/' /come/and/play/with/us/danny.csv