Grep только для содержимого между тегами

Ваше регулярное выражение соответствует только example.com , а sed заменяет только example.com с пустой строкой. Ваше регулярное выражение должно соответствовать любой строке, содержащей example.com или test.com

sed -i 's@.*\(test\|example\)\.com.*@@i' file.txt
1
13.02.2018, 19:38
3 ответа

Usar sed y expresiones regulares

sed -e 's/<Currentnumber>\(.*\)<\/Currentnumber>/\1/' file.html
0
27.01.2020, 23:32

¡Nunca analice html con expresiones regulares! Ese es el error más común en los sitios de intercambio de pilas.

Es mejor usar un analizador XML/HTML como , o saxon -lint mi propio proyecto

Ejemplos:

xmllint --xpath '//Currentnumber/text()' file.html
xmlstarlet sel -t -v '//Currentnumber/text()' file.html
saxon-lint --xpath --html '//Currentnumber/text()' file.html

Marque:Uso de expresiones regulares con etiquetas HTML

5
27.01.2020, 23:32

Надеюсь, это поможет следующему человеку:

$ echo '<Currentnumber>0.3.5</Currentnumber>' | cut -d '>' -f 2 | cut -d '<' -f1
0.3.5

Об этом ответе:

  • Ваша строка/стог сена "известна", да? Так что подобные трюки справедливы.
  • Укажу на недочет :Если кто-то изменит разметку, возможно, это решение нужно будет обновить. Отлично. (Это все еще не причина прибегать к неэффективным -и менее ремонтопригодным регулярным выражениям.. не для "этого")
  • (Может быть, сделать тест или проверку работоспособности, чтобы вы всегда получали обратно номер сборки, чтобы такое изменение было быстро замечено)
  • Никаких специальных инструментов не требуется... даже если у вас минимальная оболочка, cutбудет там. (Ответ на вопрос «попросить devops установить линтер внутри контейнера» будет совершенно не -стартовым)
0
15.10.2021, 17:40

Теги

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