сопоставить слово с буквами в сценарии оболочки - PullRequest
1 голос
/ 26 августа 2010

Мне нужно проверить, является ли второе слово из $ line_from_file строкой с символами в нижнем или верхнем регистре

(WORD - строка может быть с цифрами)

Как соответствовать строке WORD?(Я использую этот синтаксис в сценарии ksh)

    [[  ` echo $line_from_file | awk '{print $2}' ` =   WORD    ]] && print "MATCH"

WORD - могут быть маленькими или заглавными буквами с цифрами (но не только числами)

, например

WORD =textBIG

WORD = HOME_DIR

WORD = COMPUTER1

WORD = HOST_machine

Lidia

Ответы [ 3 ]

0 голосов
/ 26 августа 2010
$ shopt -s extglob
$ s="abCD123"
$ case "$s" in +([0-9]) ) echo "not match" ;;+([-a-zA-Z0-9_]) ) echo "match";; esac
match
$ s="12345"
$ case "$s" in +([0-9]) ) echo "not match" ;;+([-a-zA-Z0-9_]) ) echo "match";; esac
not match
$ s="a12345-asf"
$ case "$s" in +([0-9]) ) echo "not match" ;;+([-a-zA-Z0-9_]) ) echo "match";; esac
match
0 голосов
/ 27 августа 2010

Если вы хотите проверить, что строка не состоит только из цифр:

string=$(echo "$line_from_file" | awk '{print $2}')
not_digits_only='[^[:digit:]]+'
allowed_chars='[[:alnum:]_]'
[[ $string =~ $not-digits-only && $string =~ $allowed-chars ]] && echo "Valid"

Если вы хотите увидеть, соответствует ли строка без учета верхнего или нижнего регистра (совпадение без учета регистра):

string=$(echo "$line_from_file" | awk '{print tolower($2)}')
word_lc=$(echo $word | awk '{print tolower($0)}')
[[ $string == $word_lc ]] && echo "Match"

Если у вас Bash 4:

string=$(echo "$line_from_file" | awk '{print $2}')
[[ ${string,,} == ${word,,} ]] && echo "Match"

В Bash вы можете получить второе слово из строки несколькими способами, не вызывая awk.Один из них:

string=($line_from_file)
string=${string[1]}
0 голосов
/ 26 августа 2010

Вы можете использовать функции awk toupper (или tolower), чтобы проверить это.

WORD == toupper(WORD) означает, что слово в верхнем регистре

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...