簡體   English   中英

為什么運行帶有雙引號的awk會中斷,但可以使用單引號?

[英]Why Does Running Awk With Double Quotes Break But Works With Single Quotes?

我在運行命令時注意到該語句無法識別定界符

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

但是,這一點確實如此。

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

有什么原因嗎? 我確定這是我忘記的一些常規bash規則的一部分。

如果您使用雙引號,則$4將被Bash替換(可能是空字符串)。 您需要轉義$才能在雙引號中使用它。

發生這種情況的示例:

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

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

您忘記了雙引號允許bash變量插值。 在這種情況下,它將嘗試用外殼程序的第四個參數(通常為空)替換$4

單引號防止bash插值,並將文字$4傳遞給awk。

您將獲得與以下結果相同的結果:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM