Хотя это не поможет в этом конкретном случае, некоторым адаптерам назначаются уникальные последовательные идентификаторы:
udevadm info -a -n /dev/ttyUSB1 | grep '{serial}'
Пример последовательного идентификатора адаптера:
ATTRS{serial}=="A6008isP"`
и udev затем будет содержать:
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A6008isP", SYMLINK+="arduino"
Источник
Я не могу это разумно посоветовать, потому что синтаксический анализ html с регулярным выражением вряд ли закончится хорошо, но вы можете получить строку MANIKA с
sed -nr '/MOM:/ s/.*MOM:([^"]+).*/\1/p' file
. Он работает нормально ваш образец в любом случае ...
Я не могу это разумно посоветовать, потому что синтаксический анализ html с регулярным выражением вряд ли закончится хорошо, но вы можете получить строку MANIKA с
sed -nr '/MOM:/ s/.*MOM:([^"]+).*/\1/p' file
. Он работает нормально ваш образец в любом случае ...
Я не могу это разумно посоветовать, потому что синтаксический анализ html с регулярным выражением вряд ли закончится хорошо, но вы можете получить строку MANIKA с
sed -nr '/MOM:/ s/.*MOM:([^"]+).*/\1/p' file
. Он работает нормально ваш образец в любом случае ...
Я не могу это разумно посоветовать, потому что разбор html с регулярным выражением вряд ли закончится хорошо , но вы можете получить строку MANIKA
с
sed -nr '/MOM:/ s/.*MOM:([^"]+).*/\1/p' file
Все равно работает на вашем образце ...
-n
ничего не печатают, пока мы его не попросим -r
использовать ERE /string/
найти строки с string
s/old/new/
заменить old
на new
.*
любое число любых символов ([^"]+)
сохраняет некоторые символы, которые не являются "
\1
обратная ссылка на сохраненные символы p
печатать просто линии, которые мы изменили Я не могу это разумно посоветовать, потому что разбор html с регулярным выражением вряд ли закончится хорошо , но вы можете получить строку MANIKA
с
sed -nr '/MOM:/ s/.*MOM:([^"]+).*/\1/p' file
Все равно работает на вашем образце ...
-n
ничего не печатают, пока мы его не попросим -r
использовать ERE /string/
найти строки с string
s/old/new/
заменить old
на new
.*
любое число любых символов ([^"]+)
сохраняет некоторые символы, которые не являются "
\1
обратная ссылка на сохраненные символы p
печатать просто линии, которые мы изменили Я не могу это разумно посоветовать, потому что разбор html с регулярным выражением вряд ли закончится хорошо , но вы можете получить строку MANIKA
с
sed -nr '/MOM:/ s/.*MOM:([^"]+).*/\1/p' file
Все равно работает на вашем образце ...
-n
ничего не печатают, пока мы его не попросим -r
использовать ERE /string/
найти строки с string
s/old/new/
заменить old
на new
.*
любое число любых символов ([^"]+)
сохраняет некоторые символы, которые не являются "
\1
обратная ссылка на сохраненные символы p
печатать просто линии, которые мы изменили Я не могу это разумно посоветовать, потому что разбор html с регулярным выражением вряд ли закончится хорошо , но вы можете получить строку MANIKA
с
sed -nr '/MOM:/ s/.*MOM:([^"]+).*/\1/p' file
Все равно работает на вашем образце ...
-n
ничего не печатают, пока мы его не попросим -r
использовать ERE /string/
найти строки с string
s/old/new/
заменить old
на new
.*
любое число любых символов ([^"]+)
сохраняет некоторые символы, которые не являются "
\1
обратная ссылка на сохраненные символы p
печатать только линии, которые мы изменили Я не могу это разумно посоветовать, потому что разбор html с регулярным выражением вряд ли закончится хорошо , но вы можете получить строку MANIKA
с
sed -nr '/MOM:/ s/.*MOM:([^"]+).*/\1/p' file
Все равно работает на вашем образце ...
-n
ничего не печатают, пока мы его не попросим -r
использовать ERE /string/
найти строки с string
s/old/new/
заменить old
на new
.*
любое число любых символов ([^"]+)
сохраняет некоторые символы, которые не являются "
\1
обратная ссылка на сохраненные символы p
печатать просто линии, которые мы изменили Я не могу это разумно посоветовать, потому что разбор html с регулярным выражением вряд ли закончится хорошо , но вы можете получить строку MANIKA
с
sed -nr '/MOM:/ s/.*MOM:([^"]+).*/\1/p' file
Все равно работает на вашем образце ...
-n
ничего не печатают, пока мы его не попросим -r
использовать ERE /string/
найти строки с string
s/old/new/
заменить old
на new
.*
любое число любых символов ([^"]+)
сохраняет некоторые символы, которые не являются "
\1
обратная ссылка на сохраненные символы p
печатать просто линии, которые мы изменили Я не могу это разумно посоветовать, потому что разбор html с регулярным выражением вряд ли закончится хорошо , но вы можете получить строку MANIKA
с
sed -nr '/MOM:/ s/.*MOM:([^"]+).*/\1/p' file
Все равно работает на вашем образце ...
-n
ничего не печатают, пока мы его не попросим -r
использовать ERE /string/
найти строки с string
s/old/new/
заменить old
на new
.*
любое число любых символов ([^"]+)
сохраняет некоторые символы, которые не являются "
\1
обратная ссылка на сохраненные символы p
печатать только линии, которые мы изменили grep -Po 'MOM:\K[^"]+' file.html
Предупреждение: это не очень надежное решение; И ваш HTML недопустим
В строке, которую вы ищете, всегда есть MOM:, но вы не сказали, что она всегда имеет " после нее. В целях этого ответа я предполагаю, что вы ищете строки, которым разрешено содержать любые буквенные символы нижнего или верхнего регистра, цифры или символы подчеркивания. Они называются символами слов в терминологии регулярных выражений. Соответствие таких «слов» текста достаточно полезно, что большинство диалектов регулярных выражений имеют функции, которые помогут сделать это. Если это не то, что вы хотите, вы можете соответствующим образом изменить это решение, или вы можете использовать методы в других ответах.
Я эхо слова символов , Zanna's и [d3 ] регулярные выражения мудрые предупреждения о разборе HTML с регулярным выражением и об этом не являемся надежными. Пожалуйста, будьте осторожны и подумайте, действительно ли то, что вы запросили, именно то, что вы хотите сделать. В вашем примере кода вы назначили путь к входному файлу переменной $file, поэтому я предполагаю, что это было сделано. Вы назначили вывод своей команды на $y, поэтому я сделаю то же самое.
y="$(grep -oPm1 'MOM:\K\w+' "$file")"
-oPm1 - это более компактный способ записи -o -P -m 1.
-o печатает только совпадения, а не целую строку. -P использует PCRE, который поддерживает \K, чтобы удалить текст, сопоставленный до сих пор, поэтому он не включается в возвращенный согласованный текст. -m 1 останавливается после согласования шаблона один раз. Таким образом, вы назначаете только первое совпадение переменной, а не несколько совпадений, разделенных символами новой строки.Обратите внимание, что вы также можете добавить -m1 к команде в ответе JJoao, поэтому он использует только совпадения из первой строки, в которой есть.
Если первая строка с совпадением содержит несколько совпадений, этот метод grep дает вам все. Например, если эта строка MOM:MANIKA MOM:JANE"></td><br>, то $y будет удерживать значение:
MANIKA
JANE
Это похоже на ответ JJoao [!d21 ].
y="$(sed -rn '0,/.*MOM:(\w+).*/ s//\1/p' "$file")"
Помимо того, что в качестве замены команды заключены различия, I:
-o выводит только совпадения, а не всю строку. [ ! d13] соответствует одному или нескольким символам слов (\w+) вместо символов до " ([^"]+) -P использует PCRE, который поддерживает \K, чтобы удалить текст, сопоставленный до сих пор, так что не включается в возвращенный возвращенный текст. использует более компактный синтаксис, позволяющий дважды записывать шаблон.Для метода, который я использовал для этого, требуется GNU sed, но это реализация sed, предусмотренная в Ubuntu.
Если первая строка с совпадением содержит несколько совпадений , этот метод sed дает вам все из них . Из MOM:MANIKA MOM:JANE"></td><br> вы получите:
JANE
В строке, которую вы ищете, всегда есть MOM:, но вы не сказали, что она всегда имеет " после нее. В целях этого ответа я предполагаю, что вы ищете строки, которым разрешено содержать любые буквенные символы нижнего или верхнего регистра, цифры или символы подчеркивания. Они называются символами слов в терминологии регулярных выражений. Соответствие таких «слов» текста достаточно полезно, что большинство диалектов регулярных выражений имеют функции, которые помогут сделать это. Если это не то, что вы хотите, вы можете соответствующим образом изменить это решение, или вы можете использовать методы в других ответах.
Я эхо слова символов , Zanna's и регулярные выражения мудрые предупреждения о разборе HTML с регулярным выражением и об этом не являемся надежными. Пожалуйста, будьте осторожны и подумайте, действительно ли то, что вы запросили, именно то, что вы хотите сделать. В вашем примере кода вы назначили путь к входному файлу переменной $file, поэтому я предполагаю, что это было сделано. Вы назначили вывод своей команды на $y, поэтому я сделаю то же самое.
Это похоже на Zanna's , и вы также можете использовать этот метод с подстановкой команд, если регулярное выражение больше подходит для ваших нужд.
y="$(grep -oPm1 'MOM:\K\w+' "$file")"
-oPm1 - это более компактный способ записи -o -P -m 1.
-o печатает только совпадения, а не целую строку. -P использует PCRE, который поддерживает \K, чтобы удалить текст, сопоставленный до сих пор, поэтому он не включается в возвращенный согласованный текст. -m 1 останавливается после согласования шаблона один раз. Таким образом, вы назначаете только первое совпадение переменной, а не несколько совпадений, разделенных символами новой строки.Обратите внимание, что вы также можете добавить -m1 к команде в ответе JJoao, поэтому он использует только совпадения из первой строки, в которой есть.
Если первая строка с совпадением содержит несколько совпадений, этот метод grep дает вам все. Например, если эта строка MOM:MANIKA MOM:JANE"></td><br>, то $y будет удерживать значение:
MANIKA
JANE
Это похоже на ответ JJoao .
y="$(sed -rn '0,/.*MOM:(\w+).*/ s//\1/p' "$file")"
Помимо того, что в качестве замены команды заключены различия, I:
-o выводит только совпадения, а не всю строку. [ ! d13] соответствует одному или нескольким символам слов (\w+) вместо символов до " ([^"]+) -P использует PCRE, который поддерживает \K, чтобы удалить текст, сопоставленный до сих пор, так что не включается в возвращенный возвращенный текст. использует более компактный синтаксис, позволяющий дважды записывать шаблон.Для метода, который я использовал для этого, требуется GNU sed, но это реализация sed, предусмотренная в Ubuntu.
Если первая строка с совпадением содержит несколько совпадений , этот метод sed дает вам все из них . Из MOM:MANIKA MOM:JANE"></td><br> вы получите:
JANE
grep -Po 'MOM:\K[^"]+' file.html
Предупреждение: это не очень надежное решение; И ваш HTML недопустим
В строке, которую вы ищете, всегда есть MOM:, но вы не сказали, что она всегда имеет " после нее. В целях этого ответа я предполагаю, что вы ищете строки, которым разрешено содержать любые буквенные символы нижнего или верхнего регистра, цифры или символы подчеркивания. Они называются символами слов в терминологии регулярных выражений. Соответствие таких «слов» текста достаточно полезно, что большинство диалектов регулярных выражений имеют функции, которые помогут сделать это. Если это не то, что вы хотите, вы можете соответствующим образом изменить это решение, или вы можете использовать методы в других ответах.
Я эхо слова символов , Zanna's и регулярные выражения мудрые предупреждения о разборе HTML с регулярным выражением и об этом не являемся надежными. Пожалуйста, будьте осторожны и подумайте, действительно ли то, что вы запросили, именно то, что вы хотите сделать. В вашем примере кода вы назначили путь к входному файлу переменной $file, поэтому я предполагаю, что это было сделано. Вы назначили вывод своей команды на $y, поэтому я сделаю то же самое.
Это похоже на Zanna's , и вы также можете использовать этот метод с подстановкой команд, если регулярное выражение больше подходит для ваших нужд.
y="$(grep -oPm1 'MOM:\K\w+' "$file")"
-oPm1 - это более компактный способ записи -o -P -m 1.
-o печатает только совпадения, а не целую строку. -P использует PCRE, который поддерживает \K, чтобы удалить текст, сопоставленный до сих пор, поэтому он не включается в возвращенный согласованный текст. -m 1 останавливается после согласования шаблона один раз. Таким образом, вы назначаете только первое совпадение переменной, а не несколько совпадений, разделенных символами новой строки.Обратите внимание, что вы также можете добавить -m1 к команде в ответе JJoao, поэтому он использует только совпадения из первой строки, в которой есть.
Если первая строка с совпадением содержит несколько совпадений, этот метод grep дает вам все. Например, если эта строка MOM:MANIKA MOM:JANE"></td><br>, то $y будет удерживать значение:
MANIKA
JANE
Это похоже на ответ JJoao .
y="$(sed -rn '0,/.*MOM:(\w+).*/ s//\1/p' "$file")"
Помимо того, что в качестве замены команды заключены различия, I:
-o выводит только совпадения, а не всю строку. [ ! d13] соответствует одному или нескольким символам слов (\w+) вместо символов до " ([^"]+) -P использует PCRE, который поддерживает \K, чтобы удалить текст, сопоставленный до сих пор, так что не включается в возвращенный возвращенный текст. использует более компактный синтаксис, позволяющий дважды записывать шаблон.Для метода, который я использовал для этого, требуется GNU sed, но это реализация sed, предусмотренная в Ubuntu.
Если первая строка с совпадением содержит несколько совпадений , этот метод sed дает вам все из них . Из MOM:MANIKA MOM:JANE"></td><br> вы получите:
JANE
grep -Po 'MOM:\K[^"]+' file.html
Предупреждение: это не очень надежное решение; И ваш HTML недопустим
Перед вами всегда есть MOM:
, но вы не сказали, что после нее она всегда имеет "
. В целях этого ответа я предполагаю, что вы ищете строки, которым разрешено содержать любые буквенные символы нижнего или верхнего регистра, цифры или символы подчеркивания. Они известны как словальные символы в терминологии регулярных выражений . Соответствие таких «слов» текста достаточно полезно, что большинство диалектов регулярных выражений имеют функции, которые помогут сделать это. Если это не то, что вы хотите, вы можете соответствующим образом изменить это решение, или вы можете использовать методы в других ответах.
I echo Дэвид Фостер , Zanna и JJoao's мудрым предупреждением о разборе HTML с регулярным выражением и об этом не являемся надежными. Пожалуйста, будьте осторожны и подумайте, действительно ли то, что вы запросили, именно то, что вы хотите сделать. В вашем примере кода вы назначили путь к входному файлу переменной $file
, поэтому я предполагаю, что это было сделано. Вы назначили вывод своей команды на $y
, поэтому я сделаю то же самое.
grep
Это похоже на метод JJoao , и вы также можете использовать этот метод с подстановкой команд, если регулярное выражение больше подходит для ваших нужд.
y="$(grep -oPm1 'MOM:\K\w+' "$file")"
-oPm1
- это более компактный способ записи -o -P -m 1
.
-o
печатает только совпадения, а не целую строку. -P
использует PCRE , который поддерживает \K
, чтобы удалить текст, сопоставленный до сих пор, поэтому он не включен в возвращенный текст. -m 1
останавливается после согласования шаблона один раз. путь, вы назначаете только первое совпадение переменной, а не несколько совпадений, разделенных символом newlines . Обратите внимание, что вы также можете добавить -m1
к команде в Ответ JJoao , поэтому он использует только совпадения из первой строки с любым.
Если первая строка с совпадением содержит несколько совпадений, этот метод grep
дает вам все они . Например, если эта строка MOM:MANIKA MOM:JANE"></td><br>
, то $y
будет удерживать значение:
MANIKA
JANE
sed
Это напоминает метод Занны .
y="$(sed -rn '0,/.*MOM:(\w+).*/ s//\1/p' "$file")"
Помимо того, что в качестве замены команды заключены различия, отличия в том, что I:
\w+
) вместо символов до "
([^"]+
) .*
]) во-первых, чтобы MOM:
не появлялся в самом начале строки Техника, которую я использовал для этого , требует GNU sed
, но это реализация sed
, предусмотренная в Ubuntu.
Если первая строка с совпадением содержит несколько совпадений, этот метод sed
дает вам только последний . Из MOM:MANIKA MOM:JANE"></td><br>
вы получите:
JANE
grep -Po 'MOM:\K[^"]+' file.html
Внимание: это не очень надежное решение; И ваш HTML недопустим
Перед вами всегда есть MOM:
, но вы не сказали, что после нее она всегда имеет "
. В целях этого ответа я предполагаю, что вы ищете строки, которым разрешено содержать любые буквенные символы нижнего или верхнего регистра, цифры или символы подчеркивания. Они известны как словальные символы в терминологии регулярных выражений . Соответствие таких «слов» текста достаточно полезно, что большинство диалектов регулярных выражений имеют функции, которые помогут сделать это. Если это не то, что вы хотите, вы можете соответствующим образом изменить это решение, или вы можете использовать методы в других ответах.
I echo Дэвид Фостер , Zanna и JJoao's мудрым предупреждением о разборе HTML с регулярным выражением и об этом не являемся надежными. Пожалуйста, будьте осторожны и подумайте, действительно ли то, что вы запросили, именно то, что вы хотите сделать. В вашем примере кода вы назначили путь к входному файлу переменной $file
, поэтому я предполагаю, что это было сделано. Вы назначили вывод своей команды на $y
, поэтому я сделаю то же самое.
grep
Это похоже на метод JJoao , и вы также можете использовать этот метод с подстановкой команд, если регулярное выражение больше подходит для ваших нужд.
y="$(grep -oPm1 'MOM:\K\w+' "$file")"
-oPm1
- это более компактный способ записи -o -P -m 1
.
-o
печатает только совпадения, а не целую строку. -P
использует PCRE , который поддерживает \K
, чтобы удалить текст, сопоставленный до сих пор, поэтому он не включен в возвращенный текст. -m 1
останавливается после согласования шаблона один раз. путь, вы назначаете только первое совпадение переменной, а не несколько совпадений, разделенных символом newlines . Обратите внимание, что вы также можете добавить -m1
к команде в Ответ JJoao , поэтому он использует только совпадения из первой строки с любым.
Если первая строка с совпадением содержит несколько совпадений, этот метод grep
дает вам все они . Например, если эта строка MOM:MANIKA MOM:JANE"></td><br>
, то $y
будет удерживать значение:
MANIKA
JANE
sed
Это напоминает метод Занны .
y="$(sed -rn '0,/.*MOM:(\w+).*/ s//\1/p' "$file")"
Помимо того, что в качестве замены команды заключены различия, отличия в том, что I:
\w+
) вместо символов до "
([^"]+
) .*
]) во-первых, чтобы MOM:
не появлялся в самом начале строки Техника, которую я использовал для этого , требует GNU sed
, но это реализация sed
, предусмотренная в Ubuntu.
Если первая строка с совпадением содержит несколько совпадений, этот метод sed
дает вам только последний . Из MOM:MANIKA MOM:JANE"></td><br>
вы получите:
JANE
grep -Po 'MOM:\K[^"]+' file.html
Внимание: это не очень надежное решение; И ваш HTML недопустим
Перед вами всегда есть MOM:
, но вы не сказали, что после нее она всегда имеет "
. В целях этого ответа я предполагаю, что вы ищете строки, которым разрешено содержать любые буквенные символы нижнего или верхнего регистра, цифры или символы подчеркивания. Они известны как словальные символы в терминологии регулярных выражений . Соответствие таких «слов» текста достаточно полезно, что большинство диалектов регулярных выражений имеют функции, которые помогут сделать это. Если это не то, что вы хотите, вы можете соответствующим образом изменить это решение, или вы можете использовать методы в других ответах.
I echo Дэвид Фостер , Zanna и JJoao's мудрым предупреждением о разборе HTML с регулярным выражением и об этом не являемся надежными. Пожалуйста, будьте осторожны и подумайте, действительно ли то, что вы запросили, именно то, что вы хотите сделать. В вашем примере кода вы назначили путь к входному файлу переменной $file
, поэтому я предполагаю, что это было сделано. Вы назначили вывод своей команды на $y
, поэтому я сделаю то же самое.
grep
Это похоже на метод JJoao , и вы также можете использовать этот метод с подстановкой команд, если регулярное выражение больше подходит для ваших нужд.
y="$(grep -oPm1 'MOM:\K\w+' "$file")"
-oPm1
- это более компактный способ записи -o -P -m 1
.
-o
печатает только совпадения, а не целую строку. -P
использует PCRE , который поддерживает \K
, чтобы удалить текст, сопоставленный до сих пор, поэтому он не включен в возвращенный текст. -m 1
останавливается после согласования шаблона один раз. путь, вы назначаете только первое совпадение переменной, а не несколько совпадений, разделенных символом newlines . Обратите внимание, что вы также можете добавить -m1
к команде в Ответ JJoao , поэтому он использует только совпадения из первой строки с любым.
Если первая строка с совпадением содержит несколько совпадений, этот метод grep
дает вам все они . Например, если эта строка MOM:MANIKA MOM:JANE"></td><br>
, то $y
будет удерживать значение:
MANIKA
JANE
sed
Это напоминает метод Занны .
y="$(sed -rn '0,/.*MOM:(\w+).*/ s//\1/p' "$file")"
Помимо того, что в качестве замены команды заключены различия, отличия в том, что I:
\w+
) вместо символов до "
([^"]+
) .*
]) во-первых, чтобы MOM:
не появлялся в самом начале строки Техника, которую я использовал для этого , требует GNU sed
, но это реализация sed
, предусмотренная в Ubuntu.
Если первая строка с совпадением содержит несколько совпадений, этот метод sed
дает вам только последний . Из MOM:MANIKA MOM:JANE"></td><br>
вы получите:
JANE
grep -Po 'MOM:\K[^"]+' file.html
Внимание: это не очень надежное решение; И ваш HTML недопустим
Перед вами всегда есть MOM:
, но вы не сказали, что после нее она всегда имеет "
. В целях этого ответа я предполагаю, что вы ищете строки, которым разрешено содержать любые буквенные символы нижнего или верхнего регистра, цифры или символы подчеркивания. Они известны как словальные символы в терминологии регулярных выражений . Соответствие таких «слов» текста достаточно полезно, что большинство диалектов регулярных выражений имеют функции, которые помогут сделать это. Если это не то, что вы хотите, вы можете соответствующим образом изменить это решение, или вы можете использовать методы в других ответах.
I echo Дэвид Фостер , Zanna и JJoao's мудрым предупреждением о разборе HTML с регулярным выражением и об этом не являемся надежными. Пожалуйста, будьте осторожны и подумайте, действительно ли то, что вы запросили, именно то, что вы хотите сделать. В вашем примере кода вы назначили путь к входному файлу переменной $file
, поэтому я предполагаю, что это было сделано. Вы назначили вывод своей команды на $y
, поэтому я сделаю то же самое.
grep
Это похоже на метод JJoao , и вы также можете использовать этот метод с подстановкой команд, если регулярное выражение больше подходит для ваших нужд.
y="$(grep -oPm1 'MOM:\K\w+' "$file")"
-oPm1
- это более компактный способ записи -o -P -m 1
.
-o
печатает только совпадения, а не целую строку. -P
использует PCRE , который поддерживает \K
, чтобы удалить текст, сопоставленный до сих пор, поэтому он не включен в возвращенный текст. -m 1
останавливается после согласования шаблона один раз. путь, вы назначаете только первое совпадение переменной, а не несколько совпадений, разделенных символом newlines . Обратите внимание, что вы также можете добавить -m1
к команде в Ответ JJoao , поэтому он использует только совпадения из первой строки с любым.
Если первая строка с совпадением содержит несколько совпадений, этот метод grep
дает вам все они . Например, если эта строка MOM:MANIKA MOM:JANE"></td><br>
, то $y
будет удерживать значение:
MANIKA
JANE
sed
Это напоминает метод Занны .
y="$(sed -rn '0,/.*MOM:(\w+).*/ s//\1/p' "$file")"
Помимо того, что в качестве замены команды заключены различия, отличия в том, что I:
\w+
) вместо символов до "
([^"]+
) .*
]) во-первых, чтобы MOM:
не появлялся в самом начале строки Техника, которую я использовал для этого , требует GNU sed
, но это реализация sed
, предусмотренная в Ubuntu.
Если первая строка с совпадением содержит несколько совпадений, этот метод sed
дает вам только последний . Из MOM:MANIKA MOM:JANE"></td><br>
вы получите:
JANE
grep -Po 'MOM:\K[^"]+' file.html
Внимание: это не очень надежное решение; И ваш HTML недопустим
Перед вами всегда есть MOM:
, но вы не сказали, что после нее она всегда имеет "
. В целях этого ответа я предполагаю, что вы ищете строки, которым разрешено содержать любые буквенные символы нижнего или верхнего регистра, цифры или символы подчеркивания. Они известны как словальные символы в терминологии регулярных выражений . Соответствие таких «слов» текста достаточно полезно, что большинство диалектов регулярных выражений имеют функции, которые помогут сделать это. Если это не то, что вы хотите, вы можете соответствующим образом изменить это решение, или вы можете использовать методы в других ответах.
I echo Дэвид Фостер , Zanna и JJoao's мудрым предупреждением о разборе HTML с регулярным выражением и об этом не являемся надежными. Пожалуйста, будьте осторожны и подумайте, действительно ли то, что вы запросили, именно то, что вы хотите сделать. В вашем примере кода вы назначили путь к входному файлу переменной $file
, поэтому я предполагаю, что это было сделано. Вы назначили вывод своей команды на $y
, поэтому я сделаю то же самое.
grep
Это похоже на метод JJoao , и вы также можете использовать этот метод с подстановкой команд, если регулярное выражение больше подходит для ваших нужд.
y="$(grep -oPm1 'MOM:\K\w+' "$file")"
-oPm1
- это более компактный способ записи -o -P -m 1
.
-o
печатает только совпадения, а не целую строку. -P
использует PCRE , который поддерживает \K
, чтобы удалить текст, сопоставленный до сих пор, поэтому он не включен в возвращенный текст. -m 1
останавливается после согласования шаблона один раз. путь, вы назначаете только первое совпадение переменной, а не несколько совпадений, разделенных символом newlines . Обратите внимание, что вы также можете добавить -m1
к команде в Ответ JJoao , поэтому он использует только совпадения из первой строки с любым.
Если первая строка с совпадением содержит несколько совпадений, этот метод grep
дает вам все они . Например, если эта строка MOM:MANIKA MOM:JANE"></td><br>
, то $y
будет удерживать значение:
MANIKA
JANE
sed
Это напоминает метод Занны .
y="$(sed -rn '0,/.*MOM:(\w+).*/ s//\1/p' "$file")"
Помимо того, что в качестве замены команды заключены различия, отличия в том, что I:
\w+
) вместо символов до "
([^"]+
) .*
]) во-первых, чтобы MOM:
не появлялся в самом начале строки Техника, которую я использовал для этого , требует GNU sed
, но это реализация sed
, предусмотренная в Ubuntu.
Если первая строка с совпадением содержит несколько совпадений, этот метод sed
дает вам только последний . Из MOM:MANIKA MOM:JANE"></td><br>
вы получите:
JANE
grep -Po 'MOM:\K[^"]+' file.html
Внимание: это не очень надежное решение; И ваш HTML недопустим
Перед вами всегда есть MOM:
, но вы не сказали, что после нее она всегда имеет "
. В целях этого ответа я предполагаю, что вы ищете строки, которым разрешено содержать любые буквенные символы нижнего или верхнего регистра, цифры или символы подчеркивания. Они известны как словальные символы в терминологии регулярных выражений . Соответствие таких «слов» текста достаточно полезно, что большинство диалектов регулярных выражений имеют функции, которые помогут сделать это. Если это не то, что вы хотите, вы можете соответствующим образом изменить это решение, или вы можете использовать методы в других ответах.
I echo Дэвид Фостер , Zanna и JJoao's мудрым предупреждением о разборе HTML с регулярным выражением и об этом не являемся надежными. Пожалуйста, будьте осторожны и подумайте, действительно ли то, что вы запросили, именно то, что вы хотите сделать. В вашем примере кода вы назначили путь к входному файлу переменной $file
, поэтому я предполагаю, что это было сделано. Вы назначили вывод своей команды на $y
, поэтому я сделаю то же самое.
grep
Это похоже на метод JJoao , и вы также можете использовать этот метод с подстановкой команд, если регулярное выражение больше подходит для ваших нужд.
y="$(grep -oPm1 'MOM:\K\w+' "$file")"
-oPm1
- это более компактный способ записи -o -P -m 1
.
-o
печатает только совпадения, а не целую строку. -P
использует PCRE , который поддерживает \K
, чтобы удалить текст, сопоставленный до сих пор, поэтому он не включен в возвращенный текст. -m 1
останавливается после согласования шаблона один раз. путь, вы назначаете только первое совпадение переменной, а не несколько совпадений, разделенных символом newlines . Обратите внимание, что вы также можете добавить -m1
к команде в Ответ JJoao , поэтому он использует только совпадения из первой строки с любым.
Если первая строка с совпадением содержит несколько совпадений, этот метод grep
дает вам все они . Например, если эта строка MOM:MANIKA MOM:JANE"></td><br>
, то $y
будет удерживать значение:
MANIKA
JANE
sed
Это напоминает метод Занны .
y="$(sed -rn '0,/.*MOM:(\w+).*/ s//\1/p' "$file")"
Помимо того, что в качестве замены команды заключены различия, отличия в том, что I:
\w+
) вместо символов до "
([^"]+
) .*
]) во-первых, чтобы MOM:
не появлялся в самом начале строки Техника, которую я использовал для этого , требует GNU sed
, но это реализация sed
, предусмотренная в Ubuntu.
Если первая строка с совпадением содержит несколько совпадений, этот метод sed
дает вам только последний . Из MOM:MANIKA MOM:JANE"></td><br>
вы получите:
JANE
grep -Po 'MOM:\K[^"]+' file.html
Внимание: это не очень надежное решение; И ваш HTML недопустим
Перед вами всегда есть MOM:
, но вы не сказали, что после нее она всегда имеет "
. В целях этого ответа я предполагаю, что вы ищете строки, которым разрешено содержать любые буквенные символы нижнего или верхнего регистра, цифры или символы подчеркивания. Они известны как словальные символы в терминологии регулярных выражений . Соответствие таких «слов» текста достаточно полезно, что большинство диалектов регулярных выражений имеют функции, которые помогут сделать это. Если это не то, что вы хотите, вы можете соответствующим образом изменить это решение, или вы можете использовать методы в других ответах.
I echo Дэвид Фостер , Zanna и JJoao's мудрым предупреждением о разборе HTML с регулярным выражением и об этом не являемся надежными. Пожалуйста, будьте осторожны и подумайте, действительно ли то, что вы запросили, именно то, что вы хотите сделать. В вашем примере кода вы назначили путь к входному файлу переменной $file
, поэтому я предполагаю, что это было сделано. Вы назначили вывод своей команды на $y
, поэтому я сделаю то же самое.
grep
Это похоже на метод JJoao , и вы также можете использовать этот метод с подстановкой команд, если регулярное выражение больше подходит для ваших нужд.
y="$(grep -oPm1 'MOM:\K\w+' "$file")"
-oPm1
- это более компактный способ записи -o -P -m 1
.
-o
печатает только совпадения, а не целую строку. -P
использует PCRE , который поддерживает \K
, чтобы удалить текст, сопоставленный до сих пор, поэтому он не включен в возвращенный текст. -m 1
останавливается после согласования шаблона один раз. путь, вы назначаете только первое совпадение переменной, а не несколько совпадений, разделенных символом newlines . Обратите внимание, что вы также можете добавить -m1
к команде в Ответ JJoao , поэтому он использует только совпадения из первой строки с любым.
Если первая строка с совпадением содержит несколько совпадений, этот метод grep
дает вам все они . Например, если эта строка MOM:MANIKA MOM:JANE"></td><br>
, то $y
будет удерживать значение:
MANIKA
JANE
sed
Это напоминает метод Занны .
y="$(sed -rn '0,/.*MOM:(\w+).*/ s//\1/p' "$file")"
Помимо того, что в качестве замены команды заключены различия, отличия в том, что I:
\w+
) вместо символов до "
([^"]+
) .*
]) во-первых, чтобы MOM:
не появлялся в самом начале строки Техника, которую я использовал для этого , требует GNU sed
, но это реализация sed
, предусмотренная в Ubuntu.
Если первая строка с совпадением содержит несколько совпадений, этот метод sed
дает вам только последний . Из MOM:MANIKA MOM:JANE"></td><br>
вы получите:
JANE
grep -Po 'MOM:\K[^"]+' file.html
Внимание: это не очень надежное решение; И ваш HTML недопустим