我需要一个bash脚本来逐行读取文件。如果正则表达式匹配,则回显此行。
脚本如下:
#!/bin/bash
echo "Start!"
for line in $(cat results)
do
regex = '^[0-9]+/[0-9]+/[0-9]+$'
if [[ $line =~ $regex ]]
then
echo $line
fi
done
它正在打印文件内容,但显示以下警告:
./script: line 7: regex: command not found
错误在哪里?
其他人已经给了你关于实际使用的正则表达式的提示。遍历文件中所有行的正确方法是:
#!/bin/bash
regex='[0-9]'
while read line
do
if [[ $line =~ $regex ]]
then
echo $line
fi
done < input
在这种情况下,问题是=
登录周围的空格regex = '^[0-9]+/[0-9]+/[0-9]+$'
它应该是
regex='^[0-9]+/[0-9]+/[0-9]+$'
ShellCheck 会自动警告您这一点,并建议在哪里引用您的变量以及如何逐行阅读(您目前正在逐字阅读)。
消除正则表达式周围的空格:
regex='^[0-9]+/[0-9]+/[0-9]+$'