Судя по всему, производитель уже выпустил официальный выпуск драйвера, но, насколько я понимаю, никто еще не интегрировал его с Linux, чтобы заставить его работать. URL-адрес исходного кода — https://github.com/fresco-fl2000/fl2000.
$ requested='a1'; awk '$2=="|" { s=$1 }; $1==r { print r" found on "s }' r="$requested" file
a1 found on srv-test-1
a1 found on srv-test-2
Первая часть $2=="|" { s=$1 }
присваивает содержимое первого поля(srv-test-XX
)переменной s
, если второе поле равно |
.
Вторая часть $1==r { print r" found on "s }
сравнивает первое поле с переменной r
, которая содержит запрошенное значение. Если он совпадает, мы печатаем результат.
Если вы хотите выполнить поиск по нескольким элементам, вы можете преобразовать весь файл в список записей, доступный для grep.
awk '/^srv/ { c = $1 ; next } { print $0 " found on " c }'
во входном файле даст вам
a1 found on srv-test-1
A3 found on srv-test-1
a1 found on srv-test-2
b1 found on srv-test-2
b2 found on srv-test-2
B3 found on srv-test-2
B4 found on srv-test-2
Затем, чтобы найти один элемент, вы можете отфильтровать предыдущий вывод
awk '/^srv/ { c = $1 ; next } { print $0 " found on " c }' | grep '^a1'
дать
a1 found on srv-test-1
a1 found on srv-test-2
Вы можете сделать это с помощью редактора sed
, как показано:
str='a1'; #string to search
str_esc_lhs=$(printf '%s\n' "$str" | sed -e 's:[][\/.^$*]:\\&:g');# escaped var fit for use on the lhs
S='[^[:blank:]]'; #regex for a nonwhitespace char
$ sed -e "
/srv/,/${str_esc_lhs}/!d
H;/srv/h;/${str_esc_lhs}/!d
g;/./!d
s/\\(srv-$S*\\).*\\n\\(.*\\)/\\2 FOUND ON \\1/
" input_file.txt