В соответствии с предложением используйте синтаксический анализатор XML. Если вы все еще хотите использовать grep
, попробуйте:
grep -oP "<string>\K.+?(?=</string>)" file.xml
или если вы используете *BSD/macOS
, попробуйте pcregrep
pcregrep -o "<string>\K.+?(?=</string>)" file.xml
\K
может быть прочитано как исключающее все, что находится слева перед ним, и возвращает только правую часть .+?(?=</string>)
, пока не будет найден </string>
.