我需要一个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错误在哪里?
发布于 2014-02-20 04:34:24
这种情况下的问题是regex = '^[0-9]+/[0-9]+/[0-9]+$'中=符号周围的空格
它应该是
regex='^[0-9]+/[0-9]+/[0-9]+$'ShellCheck会自动警告你这一点,还会建议在哪里引用你的变量以及如何逐行阅读(你目前正在逐个单词地阅读)。
发布于 2014-02-20 04:34:17
其他人已经向您提供了有关实际要使用的regexp的提示。循环遍历文件中所有行的正确方法是:
#!/bin/bash
regex='[0-9]'
while read line
do
if [[ $line =~ $regex ]]
then
echo $line
fi
done < input发布于 2014-02-20 04:34:49
消除regex周围的空格:
regex='^[0-9]+/[0-9]+/[0-9]+$'https://stackoverflow.com/questions/21891730
复制相似问题