2016-09-28 82 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本身更好。