Позиция строки в строке с помощью оболочки Linux script?

Если у меня есть текст в переменной оболочки, скажем $a:

a="The cat sat on the mat"

Как я могу искать "cat" и возвращать 4 с помощью оболочки Linux script или -1, если не найден?

+31
источник поделиться
4 ответа

С bash

a="The cat sat on the mat"
b=cat
strindex() { 
  x="${1%%$2*}"
  [[ "$x" = "$1" ]] && echo -1 || echo "${#x}"
}
strindex "$a" "$b"   # prints 4
strindex "$a" foo    # prints -1
+45
источник

Вы можете использовать grep для получения байтового смещения соответствующей части строки:

echo $str | grep -b -o str

В соответствии с вашим примером:

[[email protected] ~]$ echo "The cat sat on the mat" | grep -b -o cat
4:cat

вы можете передать это awk, если хотите только первую часть

echo $str | grep -b -o str | awk 'BEGIN {FS=":"}{print $1}'
+18
источник
другие ответы

Связанные вопросы


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

Я использовал awk для этого

a="The cat sat on the mat"
test="cat"
awk -v a="$a" -v b="$test" 'BEGIN{print index(a,b)}'
+6
источник
echo $a | grep -bo cat | sed 's/:.*$//'
+5
источник

Посмотрите другие вопросы по меткам или Задайте вопрос