使用 bash 脚本逐行读取文件



我需要一个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]+$'

相关内容

  • 没有找到相关文章

最新更新