Как убрать текст между строкой и пробелом с помощью SED - PullRequest
1 голос
/ 26 февраля 2020

У меня есть файл с повторяющейся строкой в ​​этом виде:

<stack-block name="B" sub-type="SBL" type="ABM_BLOCK" level="2" parent-name="PBTYRD" geo-anchor-latitude="-34.96723069348281" geo-anchor-longitude="150.2157080161554" geo-anchor-orientation="72.35290364141252" z-index-min="1" />
<stack-block name="C" sub-type="SBL" type="ABM_BLOCK" level="2" parent-name="PBTYRD" geo-anchor-latitude="-34.967529872288864" geo-anchor-longitude="150.2145108805486" geo-anchor-orientation="72.35290364141252" z-index-min="1" />

... и так далее ...

Я хочу удалить гео-якорь -latitude = "- 34.96723069348281" секция из строк файла, включая фразу geo-anchor-latitude, до второй двойной кавычки.

Я попытался sed -i 's/geo-anchor-latitude.*"//' filename, но безуспешно, когда он раздевается все от географической привязки до конца линии.

Есть какие-нибудь подсказки? Спасибо.

Ответы [ 2 ]

2 голосов
/ 26 февраля 2020

Вы попробуете следующее:

sed -i 's/geo-anchor-latitude="[^"]*"//' filename

Вывод:

<stack-block name="B" sub-type="SBL" type="ABM_BLOCK" level="2" parent-name="PBTYRD"  geo-anchor-longitude="150.2157080161554" geo-anchor-orientation="72.35290364141252" z-index-min="1" />
<stack-block name="C" sub-type="SBL" type="ABM_BLOCK" level="2" parent-name="PBTYRD"  geo-anchor-longitude="150.2145108805486" geo-anchor-orientation="72.35290364141252" z-index-min="1" />

Регулярное выражение geo-anchor-latitude="[^"]*" соответствует подстроке, такой как:

  • A буквенная строка geo-anchor-latitude="
  • с последующей последовательностью любых символов за исключением "
  • с последующей двойной кавычкой "

Затем соответствующая подстрока, указанная выше, удаляется командой s.

1 голос
/ 26 февраля 2020

Вы можете использовать расширенные регулярные выражения (-E) с sed для этого.

sed -Ei 's/geo-anchor-latitude="[-0-9]+[.][0-9]+"//' filename

Это регулярное выражение ищет атрибут широты, за которым следует десятичное число с любым количеством цифр.

...