4

我正在使用 Bash 脚本从文本文件中逐行读取,其中包含特殊字符(正则表达式)。当我使用echo "${SOME_VAR}"它时,它不会按原样显示文本。

我熟悉防止 * 在 bash 脚本中被扩展

如何按原样显示和使用文本?

UPDATE 文本(TSV)文件包含类似于(最后一个条目是 psql 查询)的元组

bathroom    bathroom    select name from photos where name ~* '\mbathroom((s)?|(''s)?)\M';

我正在阅读 CSV,如下所示:

tail -n+2 text.file | while IFS=$'\t' read x y z
do
    echo "${z}"
done

这给出了输出

select name from photos where name ~* 'mbathroom((s)?|(''s)?)M');

请注意,缺少“\”

4

1 回答 1

3

尝试使用以下-r标志read

tail -n+2 text.file | while IFS=$'\t' read -r x y z
do
    echo "${z}"
done

read手册页:

-r 不要以任何特殊方式处理反斜杠字符。将每个反斜杠视为输入行的一部分。

于 2012-08-29T09:37:38.013 回答