Номер столбца соответствующей строки в столбце

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 ).

1
11.06.2019, 14:40
3 ответа

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

$ string=Boo
$ echo 'Hi Boo Jiggy' | awk -v b="$string" '{for (i=1;i<=NF;i++) { if ($i == b) { print i } }}'
2

Мы передаем вашу строку поиска как параметр awk, а затем просматриваем каждое поле во входных данных. Если текущее поле равно параметру поиска, мы печатаем его номер.

Обратите внимание, :это найдет более одной строки, если они существуют, но не будет работать для подстрок.

2
27.01.2020, 23:30

Использование 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.
Не знаю, важно ли это для тебя.

1
27.01.2020, 23:30

Я только что добавил решение в сценарий. Может быть, вы найдете это полезным:

#!/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
0
27.01.2020, 23:30

Теги

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