Как добавить строку во многих файлах

Не точно Linux базировался, но Вам могло бы быть интересно SmartOS

http://www.joyent.com/products/smartos/smartos-faq/

3
18.11.2018, 11:54
2 ответа

В vim, можно сделать:

:%s/<head\b[^>]*>/& <meta foo="bar">/g

Вы могли также сделать это в GNU sed, который возможно больше соответствовал бы:

for file in *.html; do
    sed -i 's/<head\b[^>]*>/& <meta foo="bar">/g' "$file"
done

Будьте осторожны, -i символьные ссылки повреждений.

4
27.01.2020, 21:17
  • 1
    для файла в *.html; сделайте sed-i's / <голова [^> *>/& <связывает рэл =, "ярлык" href = "../favicon.ico" вводит = "image/x-icon"/>/g'; сделанный –  Chalist 25.12.2012, 15:32
  • 2
    эта ошибка: sed: выражение № 1-e, символ 90: незавершенный' –  Chalist 25.12.2012, 15:33
  • 3
    sed -i.bkp это отредактирует исходные файлы и также возьмет резервное копирование в качестве filename.bkp –  Rahul Patil 25.12.2012, 15:43
  • 4
    , Если, что HTML является HTML5, Ваше регулярное выражение будет ошибочно соответствовать header теги также. Заставьте его соответствовать, только если “голова” заканчивает на границе слова. –  manatwork 25.12.2012, 15:50
  • 5
    @manatwork Хорошая выгода! Зафиксирует его теперь. –  Chris Down 25.12.2012, 16:03
sed -i '/PATTERN/ a\
    Line which you want to append' filename

для этого примера

sed -i '/<HEAD>/a <meta>' test.txt
<HEAD>
<HEAD>

Результат:

<HEAD>
<meta>
</HEAD>

Вышеупомянутая команда добавит новую строку после того, как строка будет подобрана. Однако это даст неправильный результат, если файл будет иметь входную строку как

<HEAD><TITLE></TITLE>
</HEAD>

Результат:

<HEAD><TITLE></TITLE>
<meta>
</HEAD>  //which is wrong.

Может быть мы можем попробовать этот подход:

sed -i 's/<HEAD>/<HEAD><meta>/' filename
1
27.01.2020, 21:17
  • 1
    команды <head><foo> законно в HTML, таким образом, это не будет работать как ожидалось, если такое условие будет существовать. Например, это привело бы к <head><foo>\n<meta ...> в таком случае. –  Chris Down 25.12.2012, 15:35
  • 2
    Жаль chris.. я не сделал замеченный та ошибка.. спасибо –  fewtalks 25.12.2012, 16:24

Теги

Похожие вопросы