Проверка того, является ли слово ( value) находится в списке, разделенном запятыми

AllowUsers

If specified, login is allowed only for user named that match one of the patterns.

Agregar raíz a la lista:

AllowUsers root otheruser
1
11.07.2019, 20:45
3 ответа

Использованиеawk:

list="1,21,3,4"
source=2

awk -F, -v search="$source" '{ for (i=1;i<=NF;i++) { if ($i==search) {print $i} } }' <<<"$list"

Вы ищете 2во всей строке, а 21на самом деле содержит 2.

Если вся ваша строка всегда разделена запятой, вы также можете сделать:

grep -E ',2,|,2$|^2,'

Это найдет 2в начале, середине или конце списка.

0
27.01.2020, 23:15

Стандартный прием

if echo ",$LIST," | grep -q ",$SOURCE,"
then
  echo "matched"
else
  echo "no match"
fi

(или вы можете сказатьgrep -q ",$SOURCE," <<< ",$LIST,"). Поиск 2будет соответствовать 21, но поиск ,2,не будет соответствовать ,21,. Нам нужно поставить запятые в начале и в конце $LISTна случай, если номер $SOURCEмы ищем первое или последнее число; например,

grep -q ",1," <<< "1,21,3,4"

не удастся.

6
27.01.2020, 23:15

Ваше использование «слова» является предложением (мне ), что вы могли бы использовать конструкции границы слова grep:

LIST="1,21,3,4"
SOURCE="2"
if echo "$LIST" | grep -q "\\<$SOURCE\\>"; then
  echo "matched";
else
  echo "no match";
fi
1
27.01.2020, 23:15

Теги

Похожие вопросы