我有一个.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
由于
答案 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