Renjith, нет никакой "корневой" операционной системы. История операционных систем является довольно долгой. Я просто рекомендовал бы Вам прочитать следующие статьи о Википедии:
Весело проведите время, это - действительно интересный материал...
Что-то вроде этого:
sed 's/<\/VirtualHost>/yourlinehere\n<\/VirtualHost>/'
работы. Если Вы хотите повторить эту команду на большом количестве файла, можно сделать что-то как:
for i in *; do sed -i 's/<\/VirtualHost>/yourlinehere\n<\/VirtualHost>/' "$i"; done
Вероятно, лучше (но непротестированный) благодаря @ChrisDown:
find . -type f -print0 | while IFS= read -r -d '' filename;\
do sed -i 's/<\/VirtualHost>/yourlinehere\n<\/VirtualHost>/' $filename;\
done
Если Вы не возражаете против попытки Perl:
perl -pi'*.old' -e 's(</VirtualHost>(Your stuff here\n</VirtualHost>)' myfile
-i
переключатель сохранит Ваш старый файл с a .old
расширение и печать к текущей.
Можно также использовать "исключая" (командная строка vi), если редактирование Вас хочет сделать, является даже несколько сложным. Например, Вы только хотите сделать вставку для на одном экземпляре "".
for FILENAME in *.whatever # Need a criteria to glob, or a list of names
do
ex -s $FILENAME << END_EDITS
/^<\/VirtualHost>/
O " capital-o, not zero
text to insert goes here
.
w!
q
END_EDITS
done
Этот подход дает Вам преимущества "исключая": нахождение местоположения с тщательно продуманными шаблонами и 'перемещений курсора'. Можно сделать, вещам нравится, находят шаблон, затем находят следующий экземпляр, ЗАТЕМ сделайте вставку. Или можно изменить текст, вместо просто выполнения вставляет. Или можно измениться между диапазонами. Не забывайте, что "исключая" позволяет Вам использовать "." в качестве текущей строки, таким образом.,/^somepatter/s/blah/foo/будет работать.
Можно использовать следующий однострочный код для вставки одной строки или нескольких строк в данное местоположение в файле в Вас случай перед 'VirtualHost'. Код в основном ищет имя файла (это могло быть *. *, если Вы хотите вставить тексты во все файлы) в рамках данного каталога и его подкаталогов. В найденных файлах это ищет шаблон 'VirtualHost'. После того, как это нашло шаблон, это заменяет его firstline\nsecondline\notherlines\n\VirtualHost. Обратите внимание, что 'VirtualHost' является частью текста для замены, иначе мы будем потеря это.
find directory/ -name filename -print | xargs sed -i 's|VirtualHost|firstline\nsecondline\notherlines\nVirtualHost|g'
/
поскольку sed выражение является более чистым, так как Вы не должны выходить из наклонной черты:'s:</VirtualHost>:yourlinehere\n</VirtualHost>:'
– Alexander 28.06.2013, 14:06