为什么使用双引号运行awk但是使用单引号?

时间:2015-07-18 15:47:38

标签: bash awk

我注意到在运行命令时此语句无法识别分隔符

awk -F',' "{print $4}" wtd.csv

然而,这个确实如此。

awk -F',' '{print $4}' wtd.csv

有什么理由?我确信这是我忘记的一些一般bash规则的一部分。

3 个答案:

答案 0 :(得分:2)

如果你使用双引号,$4将被Bash取代(可能是空字符串)。您需要转义$才能在双引号中使用它。

发生这种情况的例子:

[thom@lethe ~]$ echo '$4'
$4
[thom@lethe ~]$ echo "$4"

[thom@lethe ~]$ echo "\$4"
$4

答案 1 :(得分:1)

您忘记了双引号允许bash变量插值。在这种情况下,它尝试将$4替换为shell的第四个参数,该参数通常为空。

单引号阻止bash插值并将文字$4传递给awk。

答案 2 :(得分:0)

您将获得与以下相同的结果:

awk -F',' '{print $4}' wtd.csv
awk -F',' "{print \$4}" wtd.csv