Хотя это безумие, и я бы не рекомендовал его использовать, вы можете сделать что-то подобное с awk
:
awk '/<Location>/ {n=gensub("(.*)<Location>.*","\\1","g",$0); print gensub(".*[ .]([^ .]+ [^ .]+ [^ .]+ [^ .]+) *$","\\1","g",n)} ' INPUTFILE
Возможно, вы захотите изменить детали [^ .]
, чтобы правильно решитьявляется частью слова.
- это работает в строках с
<Location>
- сохраняет часть строки, пока
<Location>
- не напечатает четыре слова, которые былинайденный.( Примечание без совпадения напечатает ранее сохраненную часть строки.)