如何打印" \ n"使用bash的角色?

时间:2016-09-28 21:10:11

标签: bash unix terminal

我有一个.csv文件,其中一些字符串有一些特殊字符,如" \ n" (新行)。

我使用此脚本从第1列和第3列中提取数据:

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

主要问题是在某些 $ f3 中我有 \ n 特殊字符,我需要打印出来。

目前,这个脚本省略了这个角色。

e.g。如果我有

  

\ nXPTO

它会打印

  

XPTO

我希望会打印

  

\ nXPTO

由于

2 个答案:

答案 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本身更好,因为输入文件的大小很大。

答案 1 :(得分:2)

awk救援!

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

a=\nXPTO

或使用文件输入/输出

$ awk ... input_file > output_file