регулярное выражение из имени папки дедушки и бабушки

Вы должны начать с использования udevadm monitorпри подключении целевого устройства или udevadm info --name=/dev/xvdb1 --attribute-walk, когда оно уже подключено, чтобы посмотреть, как udev видит ваше устройство. Затем вы можете создать правила udev, которые соответствуют только специальному устройству. Также хорошим стартером будет blkid, где вы можете увидеть идентификатор вашего устройства, для которого вы можете создать правила udev. (Примеры правил могут, например. можно найти по адресуhttps://wiki.debian.org/udev)

0
11.12.2020, 16:33
4 ответа

Есть много способов извлечь предпоследний элемент из пути. Вот несколько вариантов решения

.
p='C:\Users\Administrator\Desktop\Photos-or\3-PRO\3-1-CR\CR-RESTS\LES-COQS\1920x500'

echo "$p" | grep -oP '.*\\\K[^\\]*(?=\\[^\\]+)'     # PCRE
echo "$p" | sed 's!^.*\\\([^\\]*\)\\[^\\]*$!\1!'    # RE

echo "$p" | awk -F'\\' '{print $(NF-1)}'            # Awk

IFS='\\' ps=($p); echo "${ps[-2]}"                  # Shell (bash)
px="${p%\\*}"; echo "${px##*\\}"                    # Shell

Выражения гораздо труднее читать из-за того, что каждая обратная косая черта в пути к папке Windows должна сопоставляться двойной обратной косой чертой в каждом шаблоне RE. (Фактически, я работал над парой из них, заменив \на /.)

1
28.04.2021, 23:02

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

$ echo "C:\Users\Administrator\Desktop\Photos-or\3-PRO\3-1-CR\CR-RESTS\LES-COQS\1920x500" | sed -E 's/(.*\\)([^\\]+)(\\[^\\]+)/\2/'
LES-COQS
0
28.04.2021, 23:02

Возможно, это поможет вам получить ожидаемый результат

#!/bin/bash
# GNU bash, version 4.4.20
echo "C:\Users\Administrator\Desktop\Photos-or\3-PRO\3-1-CR\CR-RESTS\LES-COQS\1920x500" | rev | awk -F'\' '{ print $2 }' | rev

Выход:

LES-COQS

Проверено на:https://rextester.com/l/bash_online_compiler

1
28.04.2021, 23:02

Предполагая, что вы хотите вывести второй -последний компонент этого пути в стиле MS -DOS -, вы можете сделать:

msdos_path='C:\Users\Administrator\Desktop\Photos-or\3-PRO\3-1-CR\CR-RESTS\LES-COQS\1920x500'
expr "\\$msdos_path" : '.*\\\(.*\)\\.*'

Здесь будет вывод LES-COQS.

2
28.04.2021, 23:02

Теги

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