Linux Bash截取脚本中的通配符

Linux Bash截取脚本中的通配符,linux,bash,Linux,Bash,我使用Bash脚本逐行读取文本文件,其中包含特殊字符(正则表达式)。当我使用echo“${SOME_VAR}”时,它不会按原样显示文本 我很熟悉 如何按原样显示和使用文本 更新 文本(TSV)文件包含类似的元组(最后一个条目是psql查询) 我阅读CSV的内容如下: tail -n+2 text.file | while IFS=$'\t' read x y z do echo "${z}" done 它给出了输出 select name from photos where name

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

我很熟悉

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

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

我阅读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');

请注意,缺少“\”

请尝试将
-r
标记与
读取一起使用:

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

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


向我们展示您的输入和一些代码please@Fredrik请参阅我的更新。替代
tail
过程(并避免可能导致子shell问题的管道)的方法是
{read;read;而IFS=$'\t'read z y z;do…;done;}
。注意循环之前的两个一次性
read
命令;所有3个共享重定向到命令组的输入。
tail -n+2 text.file | while IFS=$'\t' read -r x y z
do
    echo "${z}"
done