【问题标题】:How to print "\n" character using bash?如何使用 bash 打印“\n”字符?
【发布时间】:2016-09-28 21:10:11
【问题描述】:

我有一个 .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

谢谢

【问题讨论】:

    标签: bash unix terminal


    【解决方案1】:

    awk 来救援!

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

    或文件输入/输出

    $ awk ... input_file > output_file
    

    【讨论】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-18
        • 1970-01-01
        • 2023-03-16
        • 2020-05-04
        • 2010-10-07
        • 2020-12-26
        相关资源
        最近更新 更多