[英]bash: grep wildcard start and end with
我有一个这样的bash脚本:
TABLE_TO_IGNORE=$(mysql -u $DBUSER -p$DBPASS -h $DBHOST -N <<< "show tables from $DBNAME" | grep "^$i" | xargs);
目前,我只能以grep开头的文本。 如何编写确定文本结尾的代码?
假设1:
我的$ i是:test1_ * tb2_ * tb3_ *
后面带有*号,它将grep作为以这些值开头的文本
假设2:
我的$ i是:* _sometext1 * sometext2
前面带有*,它将grep作为以这些值结尾的文本。
我知道这个:
grep'^ sometext1'files ='sometext1'在行首
grep'sometext2 $'files ='sometext2'在行尾
问题是:如何将bif代码中的if标记为*放在前面或后面?
注意:您可以忽略我的bash代码,我只需要if else条件来确定“ *”在字符串的前面还是后面。
任何帮助都会很棒。
谢谢
您可以尝试此代码。
#!/bin/bash
stringToTest="Hello World!*"
echo $stringToTest | grep "^\*.*" > /dev/null
if [ $? -eq 0 ]; then
echo "Asterisk is at the front"
fi
echo $stringToTest | grep "^.*\*$" > /dev/null
if [ $? -eq 0 ]; then
echo "Asterisk is at the back"
fi
如该代码所示,我使用了退出代码( $?
)来确定正则表达式是否与字符串匹配。 如man grep所示:
通常, 如果找到选定的行 ,则退出状态为0 ,否则为 1。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.