我将服务器移动到新服务器(更便宜)。两者在不同版本(5.0和6.5)中都具有相同的Linux(CentOS)。我有一个shell脚本来过滤日志中的一行:
if [ -f $URLFILE ]
then
echo "File found, getting userinfo..."
while read line;
do
if [[ $line =~ ".Userlist: .*" ]]
then
echo "Found user information."
echo $line > /home/....net.txt;
...
因此,如果红线与正则表达式匹配,则应将其回显到文件中。这在旧系统上工作正常,但正则表达式在新系统上不匹配(没有任何其他更改)。正如互联网上的正则表达式测试人员告诉我的那样,正则表达式是正确的。
答案 0 :(得分:1)
有两个问题:
sh
不支持使用=~
等bash
你可以在BASH中使用它:
if [[ "$line" =~ Userlist:[[:blank:]] ]]
或者完全避免使用正则表达式并使用glob matching
:
if [[ "$line" == *"Userlist: "* ]]