Как стать автором
Обновить

Консольные раскопки

Время на прочтение 1 мин
Количество просмотров 736
Дело было давно. Писал в консольке всякие скрипты, но некоторые могут вполне понадобиться и в PHP системных вызовах. Очень актуально на больших и очень больших текстовых файлах.

1. Замена символов в файле
2. Уберание windows-like переносов
3. Быстрый подсчёт строк
4. Вырезать столбцы из CSV-like файла
5. Сортировка файла по столбцам
6. Разбор базы на основе ini-файла

Я использую в п. 4,6 awk. Если кто не знает, то это специализированный с-подобный язык (кстати, напоминает очень пхп) для обработки текстовых данных. Работает очень и очень быстро.


1) Заменить все 'e' на 'o' в файле foo.
sed -i.bak y/e/o/g foo

-i.bak создаёт резервную копию файла с именем foo.bak

2) Если скопировали файл с виндовыми переносами (\n\r), то убрать их просто
col -bx < dosfile > newfile


3) Очень быстро посчитать количество строк в файле (работает в сотни раз быстрее, чем это делать пыхом)
wc -l file


4) Вырезать из файла несколько колонок
cat somefile | awk '{print $1 $2 $4 $6;}'

Здесь на входе CSV файл, только разделитель табуляция/пробел. А если надо запятая или что-то ещё, то легко добавить другой разделитель дописав
awk 'BEGIN{FS=","} {print $1 $2 $4 $6;}'

И на выходе 1,2,4,6 колонки из него.

5) Если стоит задача отсортировать по столбцам файл foo, при чём разделитель столбцов — табуляция (параметр "-t \t"):
sort -t \t -b -k 1n,3n foo 


6) Точно не напишу, не помню потому что, но могу, если надо, рассказать как парсить ini файлы с помощью awk
Теги:
Хабы:
+5
Комментарии 0
Комментарии Комментировать

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн