En x86 de 32 -bits, ambas variantes de Spectre están arregladas, incluso en Ubuntu.Las correcciones para Meltdown todavía se están trabajando en ; que yo sepa, ninguna distribución los envía, aunque no he comprobado openSUSE (, los parches están siendo desarrollados por SUSE, por lo que podrían aparecer allí antes ).
Использование awk:
$ string=Boo
$ echo 'Hi Boo Jiggy' | awk -v b="$string" '{for (i=1;i<=NF;i++) { if ($i == b) { print i } }}'
2
Мы передаем вашу строку поиска как параметр awk, а затем просматриваем каждое поле во входных данных. Если текущее поле равно параметру поиска, мы печатаем его номер.
Обратите внимание, :это найдет более одной строки, если они существуют, но не будет работать для подстрок.
Использование tr
иgrep
:
string=Boo
echo "Hi Boo Jiggy" | tr ' ' '\n' | grep -nw "$string" | cut -d':' -f1
Обратите внимание, что в отличие от версии @Jesse, этот вариант не поддерживает строку -. Итак,
echo 'Hi
Boo Jiggy' | tr ' ' '\n' | grep -nw "$string" | cut -d':' -f1
выведет 2, а версия @Jesse выведет 1.
Не знаю, важно ли это для тебя.
Я только что добавил решение в сценарий. Может быть, вы найдете это полезным:
#!/bin/sh
[ -z "$1" ] && exit 0
value="$(head -n1 "$1" | grep -Eo '".*"')"
column="$(sed '1d' "$1" | awk '{ for (i=1;i<=NF;i++) if ($i == '$value') print i }')"
echo "Column: $column"
Пример:
yurij@opensuse-leap65:~/trash/awk> cat example.txt
String="Boo"
Hi Boo Jiggy
yurij@opensuse-leap65:~/trash/awk>./process.sh./example.txt
Column: 2