sed s/":53'"/":40'"/g <<<"listen_addresses = ['127.0.0.1:53', '[::1]:53']"
сделать что-то близкое к вам спросил. Но я согласен с комментарием @Jeff Schaller!
Из вашего вопроса никто не может понять, почему вы просто не делаете это вручную? Каков текст, из которого вы получаете свои строки, чем они отличаются друг от друга? какие варианты должны быть покрыты регулярным выражением?
sed
хорош для замены, но для выбора основной линии лучше grep
.
Я не уверен, что вы пытаетесь сделать, но с помощью dd
вы берете образ и заменяете содержимое раздела (, поэтому существующая ext4
файловая система )с образом, который образ диска --имеет таблицу разделов, поэтому вы создаете таблицу разделов поверх раздела (, и это не поддерживается, поэтому ядро не будет пытаться обнаружить разделы наsdb1
). Таким образом, вам нужно либо использовать весьsdb
(или другой, пустой диск )для образа, либо, если вы хотите только «данные» из образа, распаковать его (создать из него петлевое устройство, используяlosetup -f openwrt-19.07.7-x86-64-combined-ext4.img
)и скопируйте данные в sdb1
.
Вы можете скопировать изображение после суперблока sdb1
, чтобы сохранить заголовок ext4 неповрежденным, но после этого вы все равно получите поврежденный ext4.