繁体   English   中英

bash:grep通配符开头和结尾为

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM