2013-10-09 1 views
0

로 끝 : 배쉬 : GREP 와일드 카드 시작하고 내가 이런 bash는 스크립트가

TABLE_TO_IGNORE=$(mysql -u $DBUSER -p$DBPASS -h $DBHOST -N <<< "show tables from $DBNAME" | grep "^$i" | xargs); 

현재 내가에만 수 텍스트로 시작하는 grep을 할 수 있습니다. 로 끝나는 텍스트를 결정하는 코드를 작성하는 방법?

내 $의 난입니다 :

하자가 한 말 뒤쪽 부분에서 *와 test1_ * tb2_ * tb3_ *

, 그것은 그 값

로 시작하는 텍스트로 grep을합니다

내 $의 난입니다 :

하자 2 말 * _so metext1 * sometext2

앞에 *가 있으면 그 값으로 끝나는 텍스트로 grep됩니다.

나는이 알고 : 라인
그렙 행의 끝에서 'sometext2의 $'파일 = 'sometext2'

질문의 시작
그렙 '^ sometext1'파일 = 'sometext1를' is :
내가 bash 코드에 *를 쓰면 어떻게 앞이나 뒤에 있는지 알 수 있습니까?

참고 : 내 "bash code"를 무시할 수 있습니다. "*"가 문자열의 앞이나 뒤에 있는지 확인하기 위해 if else 조건 만 있으면됩니다.

도움이 될 것입니다.

감사합니다.

답변

1

이 코드를 사용해보십시오. 이 코드에 나타낸 바와 같이

#!/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에 나타낸 바와 같이 :

일반적으로 종료 상태는 선택된 라인 그렇지 않으면 1 을 발견하는 경우 0입니다.

희망이 도움이됩니다.