Pull to refresh

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

Reading time1 min
Views743
Дело было давно. Писал в консольке всякие скрипты, но некоторые могут вполне понадобиться и в 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
Tags:
Hubs:
Total votes 5: ↑5 and ↓0+5
Comments0

Articles