Вы используете расширенное регулярное выражение, но по-прежнему экранируете \+
, поэтому оно ищет буквальный знак плюс и не вызывает подстановку.
Попробуйте,
INTERNAL_NUM=$(grep -E '\s*internal_num\s*=' file.xml |sed -E 's/internal_num\s*=\s*([0-9]+)/\1/')
echo "$INTERNAL_NUM"
Тестовые наборы (протестированы на GNU sed V4.2.1):
$ echo "internal_num = 1234" | sed -E 's/internal_num\s*=\s*([0-9]\+)/\1/'
internal_num = 1234
$ echo "internal_num = 1234" | sed -E 's/internal_num\s*=\s*([0-9]+)/\1/'
1234
Поскольку в других ответах упоминается (и подробно объясняется ), вам следует серьезно подумать о том, чтобы не использовать регулярное выражение для анализа XML.
Тайна разгадана :команда dd
:
dd if=ubuntu.img of=/dev/sdb bs=16M
после этого требуется синхронизация:
sync
Или можно использовать некоторые флаги синхронизации, встроенные в dd
. dd
по умолчанию не ожидает фактической записи буферизованных данных на диск.