Вставка нескольких строк в файл после указанного шаблона с помощью сценария оболочки
Я хочу, чтобы вставить несколько строк в файл с помощью shell-скрипт.
Давайте рассмотрим содержимое моего входного файла:
вход.txt:
abcd
accd
cdef
line
web
теперь я должен вставить четыре строки после строки 'cdef' в вход.txt.
После вставки мой файл должен измениться следующим образом:
abcd
accd
cdef
line1
line2
line3
line4
line
web
выше вставки я должен сделать с помощью shell-скрипт. Кто-нибудь может мне помочь?
5 ответов:
другое
sed,sed '/cdef/r add.txt' input.txtвход.txt:
abcd accd cdef line webдобавить.txt:
line1 line2 line3 line4. Затем используйте
-iСsed.sed -i '/cdef/r add.txt' input.txtесли вы хотите использовать регулярное выражение в качестве выражения, вы должны использовать
-Eтегsed.sed -E '/RegexPattern/r add.txt' input.txt
С помощью GNU
sed:sed "/cdef/aline1\nline2\nline3\nline4" input.txtесли вы начали с:
abcd accd cdef line webэто позволит произвести:
abcd accd cdef line1 line2 line3 line4 line webесли вы хотите сохранить изменения в файле на месте, говорят:
sed -i "/cdef/aline1\nline2\nline3\nline4" input.txt
используя
awk:awk '/cdef/{print RS "line1" RS "line2" RS "line3" RS "line4";next}1' input.txtобъяснение:
- вы находите строку, которую хотите вставить с помощью
/.../- печать текущую строку с помощью
RSпостроен вawkпеременная, которая по умолчанию установлена вnew-line.- вы добавляете новые строки, разделенные этой переменной
1в конце концов приводит к печати всех других строк. Используяnextперед это позволяет нам предотвратить текущую строку, так как вы уже напечатали ее с помощью
$ awk '/cdef/{print RS "line1" RS "line2" RS "line3" RS "line4";next}1' input.txt abcd accd cdef line1 line2 line3 line4 line web
чтобы внести изменения в файл, вы можете сделать:
awk '...' input.txt > tmp && mv tmp input.txt
этот ответ легко понять
- копировать перед шаблоном
- добавить строки
- копировать шаблон
заменить оригинальный файл
FILENAME= ' app / Providers / AuthServiceProvider.php'
Шаг 1 копирование до шаблона
sed '/THEPATTERNYOUARELOOKINGFOR/Q' $FILENAME >>${FILENAME}_tempШаг 2 добавьте свои строки
cat << 'EOL' >> ${FILENAME}_temp HERE YOU COPY AND PASTE MULTIPLE LINES, ALSO YOU CAN //WRITE COMMENTS AND NEW LINES AND SPECIAL CHARS LIKE $THISONE EOLШаг 3 добавьте остальную часть файла
grep -A 9999 'THEPATTERNYOUARELOOKINGFOR' $FILENAME >>${FILENAME}_tempзаменить оригинальный файл
mv ${FILENAME}_temp $FILENAMEесли вам нужны переменные, в шаге 2 Замените 'EOL' на EOL
cat << EOL >> ${FILENAME}_temp this variable will expand: $variable1 EOL
Comments