我想使用bash grep匹配文件中包含[xyz]或[abc]的字符串,
Testing of pattern line no 1 [xyz]
Hi, this is just test file contains abc and/or xyz etc..
if ( grep -iq "\[xyz\]" "$TEST_FILE" ); then
PATTERN_MATCH="xyz matched"
elif ( grep -iq "\[abc\]" "$TEST_FILE" ); then
PATTERN_MATCH="abc matched"
fi
问题是,尽管通过传递xyz / abc而不是[xyz] / [abc],它始终匹配。
文件内容可以匹配不区分大小写的[XYZ]或[ABC],但只能匹配xyz或abc。 [和]用字符串括起来的特殊字符。有人可以因为[和]特殊字符指出问题或解决方案吗?我也尝试过使用grep和egrep的其他方式,但是没有运气!
答案 0 :(得分:2)
您正在尝试检查grep的退出代码(应使用$?代替)。在这里,我已经重写了您的代码以供使用:
#!/bin/bash
TEST_FILE='./input.txt'
[[ $( grep -i '\[xyz\]' "$TEST_FILE" ) ]] && PATTERN_MATCH="xyz matched"
[[ $( grep -i '\[abc\]' "$TEST_FILE" ) ]] && PATTERN_MATCH="abc matched"
echo $PATTERN_MATCH
希望它可以帮助伙伴!