我有這樣的代碼,其處理CSV文件:爲什麼反斜槓運行時消失?
#!/bin/bash
while read line
do
variable=$(echo $line | awk -F, '{print $2}')
echo $variable
done < ./file.csv
如果CSV文件包含的任何\
,當我運行這個命令,輸出文本不顯示\
。
我如何確保\
不被刪除?
我有這樣的代碼,其處理CSV文件:爲什麼反斜槓運行時消失?
#!/bin/bash
while read line
do
variable=$(echo $line | awk -F, '{print $2}')
echo $variable
done < ./file.csv
如果CSV文件包含的任何\
,當我運行這個命令,輸出文本不顯示\
。
我如何確保\
不被刪除?
此行爲的原因是read
內建使用\
作爲轉義字符。 -r
標誌禁用此行爲。
所以,這應該工作:
while read -r line
variable=$(echo $line | awk -F, '{print $2}')
echo $variable
done < ./file.csv
你也應該把周圍的事物,像$(...)
和變量"..."
,像
variable="$(command)"
echo "$variable"
此外,可以使用'cut -d,-f2'來代替'awk'命令。 – Zash 2012-04-21 16:25:19
您的''r''''建議也適用於我在while循環中刪除\的相反問題,所以謝謝! – 2014-05-07 22:09:31
的手冊頁bash
具有這樣說read
:
反斜槓字符(\)可以用來刪除任何特殊含義下一個字符 閱讀 和續行。
用雙引號試試:'「$(回聲 」$線「 | awk -F,'{print $ 2}')「' – C2H5OH 2012-04-20 00:22:24
這是一個反斜槓。從底部開始。 – 2012-04-20 00:24:44