2016-09-28 326 views
1

我有一個.csv文件,其中一些字符串有一些特殊字符,如「\ n」(新行)。如何使用bash打印「 n」字符?

我使用這個腳本從第1列和3提取數據:

while IFS=";" read f1 f2 f3 f4 
do 
     echo "\"$f1\" = \"$f3\";" 
done <file.csv>file.txt 

的主要問題是,在一些$ F3我有\ n特殊字符,我需要打印它。

此刻,這個腳本省略了這個字符。

例如如果我有

\ nXPTO

將打印

XPTO

和我預料將打印

\ nXPTO

感謝

回答

2

awk來救援!

$ echo "a;b;\nXPTO;d" | awk -F';' '{print $1 "=" $3}' 

a=\nXPTO 

或文件輸入/輸出

$ awk ... input_file > output_file 
+0

感謝。它爲我工作! –

2

使用read -r防止read從解釋轉義序列:

while IFS=";" read -r f1 f2 f3 f4 
do 
    echo "\"$f1\" = \"$f3\";" 
done <file.csv>file.txt 

邊注:雖然它可以與bash做正如我上面顯示,我同意Karafka認爲awk是理想的是那種問題,表現非常好。輸入文件具有相當大的尺寸,比bash本身更好。