Я хотел бы вставить несколько строк из текстового файла перед определенным текстом.Я хотел бы использовать регулярное выражение для выделения конкретного текста, и текст выглядит так:
//**insert_yannyann*//
『// ** insert_yannyann * //』 находится в b.txt, а b.txt простовот так
...
//**insert_yannyann*//
...
a.txt вот так:
1234
5678
9101
Для вставки текстового файла .txt перед шаблоном текста в b.txt, я попробовал это регулярное выражение в Ubuntu18.04 команда bash.
sed -n -i -e '\/\/**insert_yannyann*\/\/ /r a.txt' -e 1x -e '2,${x;p}' -e '${x;p}' b.txt
, даже если я попробовал другой шаблон регулярных выражений.
sed -n -i -e '//?\s*\*[(?=.*\insert_yannyann\b)]*?\*\s*//? /r a.txt' -e 1x -e '2,${x;p}' -e '${x;p}' b.txt
, но sed всегда показывает неверное сообщение для неправильного регулярного выражения, которое я использовал.
Я хочу, чтобы b.txt был таким:
...
1234
5678
9101
//**insert_yannyann*//
...
Я определенно проверяю, что два из этих регулярных выражений корректны некоторыми онлайн-инструментами регулярных выражений, но я не понимаю, почему sed показывает неправильное сообщение для меня.
\/\/**insert_yannyann*\/\/
//?\s*\*[(?=.*\insert_yannyann\b)]*?\*\s*//?
Я не уверен, одинаково ли регулярное выражение в разных языках программирования, может кто-нибудь объяснить, почему оно не правильно?