如何在perl中调用awk on excel

时间:2013-06-13 20:02:35

标签: awk

我正在尝试使用变量或系统命令来调用awk(处理csv文件)

awk命令是

awk -F "\"*,\"*" '{if (\$6 == " ADMCHG") print \$0}' $output_dir/$userfile > $output_dir/$userfile.ADMCHG.

有效。

但是,如果我使用变量或系统命令来调用这个awk命令

$result = `awk -F "\"*,\"*" '{if ($6 == " ADMCHG") print $0}' "$output_dir/$userfile" > "$output_dir/$userfile.ADMCHG"`;

system ("awk -F "\"*,\"*" '{if (\$6 == " ADMCHG") print \$0}' $output_dir/$userfile > $output_dir/$userfile.ADMCHG");

我想问题是awk -F "\"*,\"*" ,我该如何解决?

Using AWK on CSV Files

1 个答案:

答案 0 :(得分:1)

一旦我忽略了你令人困惑的头衔,我认为理解你的问题 - 你没有逃脱你的引号,所以你的字符串被分开了。需要考虑的一些事项:

  • 您可以在" and之间切换,例如:

    “这是一个包含一些'单引号'的字符串”但是 “这是两个”字符串“,中间有一个字” 但如果您使用双引号,则variables with a $ in front will be evaluated

  • 您可以使用\来转义,因此" \" "是一个字符串。您可以添加

最有可能的是,您需要单引号:

system ('awk -F "\"*,\\"*" \'{if (\$6 == " ADMCHG") print \$0}\' $output_dir/$userfile > $output_dir/$userfile.ADMCHG');

请注意,我已将包含该字符串的引号切换为单引号,并使用\来转义。我还用另一个\来逃避文字\,这就是为什么有一个\\

查看here以获得更详细的解释。