пятница, 5 июля 2013 г.

sed

Stream editor для фильтрирования и преобразования текста.

Следующий код возьмет первые 10 строк файла *ptt(если он один в каталоге) и найдет в них текст kinase и заменит его на STANFORD, этот результат будет выведен в стандартный поток выводу
head *ptt | sed ’s/kinase/STANFORD/g’

Пример решения проблемы файла с виндовсковским концом строки на линуксе
sed -i ’s/\r/\n/g’ windows-newline-file.csv
-i[SUFFIX](--in-place[=SUFFIX]) замену сделает прям в файле, а с указанием суфикса сделает бекап оригинального файл имя+суфикс

"Рецепты использования" http://www.catonmat.net/blog/wp-content/uploads/2008/09/sed1line.txt

-e script, --expression=script
              add the script to the commands to be executed
Не понятно немного назначение этого ключа, потому что вон выше вставлен скрипт без этого ключа, как я понял с примеров выше, благодаря этому ключу можно вставлять несколько ключей.

Мой пример использования в проекте:
После windows нужно заменить имена mysql таблиц, потому что в linux они кейссенсетив. Создаем файл для правок каждого имени таблицы:
sweden.tables.sed:
s%`account_`%`Account_`%
s%`address`%`Address`%
s%`announcementsdelivery`%`AnnouncementsDelivery`%
s%`announcementsentry`%`AnnouncementsEntry`%
s%`announcementsflag`%`AnnouncementsFlag`%
s%`assetcategory`%`AssetCategory`%
s%`assetcategoryproperty`%`AssetCategoryProperty`%
s%`assetentries_assetcategories`%`AssetEntries_AssetCategories`%
s%`assetentries_assettags`%`AssetEntries_AssetTags`%
s%`assetentry`%`AssetEntry`%
s%`assetlink`%`AssetLink`%
s%`assettag`%`AssetTag`%
s%`assettagproperty`%`AssetTagProperty`%
s%`assettagstats`%`AssetTagStats`%
s%`assetvocabulary`%`AssetVocabulary`%
s%`blogsentry`%`BlogsEntry`%
s%`blogsstatsuser`%`BlogsStatsUser`%
s%`bookmarksentry`%`BookmarksEntry`%
s%`bookmarksfolder`%`BookmarksFolder`%
s%`browsertracker`%`BrowserTracker`%
s%`calevent`%`CalEvent`%
...

sed -f sweden.tables.sed dump.sql > changed_result.sql

Комментариев нет:

Отправить комментарий