Linux Bash截取脚本中的通配符
我使用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
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