我正在尝试在回显一行(示例[abc_testing_12345])之后grep一个正则表达式模式(“^ [\ w + [0-9] {5,6}] $”)。 当我通过定义两个变量,输入和模式在命令行上执行它时它工作正常。 但是当我在while循环中使用相同的东西并从文件中获取输入值时,它不起作用。
我在互联网上看过多个帖子并尝试使用这些选项,但它没有用。
示例工作代码:
pattern="^\[\w+[0-9]{5,6}\]$"
input="[abc_testing_12345]"
echo "$input" | egrep -c "$pattern
这打印值1
但是当我从文件填充'input'变量然后尝试grep时,它不会打印值1
示例代码:
pattern="^\[\w+[0-9]{5,6}\]$"
cat inputFile | grep "\[" | while read line
do
echo "$line" | egrep -c "$pattern"
done
此代码的结果为0
请帮我解决这个问题。
提前致谢。
答案 0 :(得分:0)
我无法重现你的问题。只要1
包含与inputfile
匹配的行,您提供的脚本就会返回$pattern
,如:
[abc_testing_12345]
但我建议将while
循环重写为:
while read line
do
echo "$line" | grep -c "$pattern"
done <<< $(grep "\[" inputfile)
甚至可以避免使用while
循环:
grep -c "$pattern" inputfile