繁体   English   中英

如何使用bash打印“\\n”字符?

[英]How to print "\n" character using bash?

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

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

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

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

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

例如,如果我有

\\nXPTO

它会打印

XPTO

我希望这会打印

\\nXPTO

谢谢

使用read -r防止read解释转义序列:

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

旁注:虽然它可以像我上面展示的那样用bash完成,但我同意Karafka 的观点,即awk是解决这类问题的理想选择,并且性能非常好。 比 bash 本身更好,因为输入文件的大小很大。

awk来救援!

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

a=\nXPTO

或文件输入/输出

$ awk ... input_file > output_file

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM