【发布时间】:2015-04-16 12:08:07
【问题描述】:
我正在尝试在 perl 脚本中运行以下命令:
#!/usr/bin/perl
my $cmd3 =`sed ':cycle s/^\(\([^,]*,\)\{0,13\}[^,|]*\)|[^,]*/\1/;t cycle' file1 >file2`;
system($cmd3);
但没有产生任何输出或任何错误。 尽管当我从命令行运行命令时,它运行良好并提供了所需的输出。你们能帮我在这里做错什么吗? 谢谢
【问题讨论】:
-
Perl 是
sed的超集,因此涉及sed根本没有任何意义。perl -pe '1 while s/^(([^,]*,){0,13}[^,|]*)\|[^,]*/$1/' file1 >file2 -
@tripleee 谢谢,我会接受你的建议。我不知道 Perl 是 sed 的超集。它是为我写的,但有什么选项可以像我们在 sed "i" 中将输出写回同一个文件一样。再次感谢!
-
@tripleee 此 perl 命令也不适用于 perl 脚本。但我可以在命令行上使用它。我应该修改什么才能在 perl 脚本中运行?
-
Perl
-i就像(有时)sed -i一样可用;但是当然重定向到file2没有任何意义。 -
@tripleee 谢谢,但是这个命令在 perl 脚本中不起作用。我怎样才能做到这一点?