Замена текста:
Способ 1: Замена подстроки с помощью ПЕРЛ
P.S. Если кто-то подскажет более изящное решение на awk, sed или еще чем-то, что идет штатно во FreeBSD для удаления BOM, буду только рад :) Варианты с perl не предлагать, они очевидны и не интересны :)
Первый вариант с awk почему-то не работает, часть файла теряется.
FreeBSD Подсказывает в motd вариант на sed:
perl -e 's/Pavel/Misha/g' -pi ./index.htmlСпособ 2: Замена с помощью sed
sed -e 's/Pavel/Misha/g' ./index.html > index_new.htmlСпособ 3: Замена с помощью awk
awk '{gsub("Pavel","Misha",$0); print > FILENAME}' ./index.htmlПолезные функции для работы с файлами:
dos2unix() { sed -i '' -e 's/'"$(printf '\015')"'$//g' "$2" } unix2dos() { sed -i '' -e 's|$|'"$(printf '\015')"'|g' "$2" } delete_BOM() { # awk '{sub(/^\xEF\xBB\xBF/,"",$0); print > FILENAME}' "$1" awk '{sub(/^\xEF\xBB\xBF/,"",$0); print}' "$1" >> "${1}.awkbak" mv "${1}.awkbak" "$1" } #По 1 файлу dos2unix -o russian.php delete_BOM russian.php # Найти и обработать все *.tpl и *.php файлы от текущего каталога. for i in $(find . -type f \( -name '*.tpl' -o -name '*.php' \) -print); do echo 'Working: '$i'...' dos2unix -o $i delete_BOM $i donedos2unix -o для обратной совместимости с одноименной консольной утилитой /usr/ports/converters/unix2dos, но зачем засорять систему лишними пакетами, если можно обойтись встроенными средствами?
P.S. Если кто-то подскажет более изящное решение на awk, sed или еще чем-то, что идет штатно во FreeBSD для удаления BOM, буду только рад :) Варианты с perl не предлагать, они очевидны и не интересны :)
Первый вариант с awk почему-то не работает, часть файла теряется.
FreeBSD Подсказывает в motd вариант на sed:
sed -e '1s/^\xef\xbb\xbf//' < bomfile > newfile
Комментариев нет:
Отправить комментарий