Дело было давно. Писал в консольке всякие скрипты, но некоторые могут вполне понадобиться и в PHP системных вызовах. Очень актуально на больших и очень больших текстовых файлах.
1. Замена символов в файле
2. Уберание windows-like переносов
3. Быстрый подсчёт строк
4. Вырезать столбцы из CSV-like файла
5. Сортировка файла по столбцам
6. Разбор базы на основе ini-файла
Я использую в п. 4,6 awk. Если кто не знает, то это специализированный с-подобный язык (кстати, напоминает очень пхп) для обработки текстовых данных. Работает очень и очень быстро.
1) Заменить все 'e' на 'o' в файле foo.
-i.bak создаёт резервную копию файла с именем foo.bak
2) Если скопировали файл с виндовыми переносами (\n\r), то убрать их просто
3) Очень быстро посчитать количество строк в файле (работает в сотни раз быстрее, чем это делать пыхом)
4) Вырезать из файла несколько колонок
Здесь на входе CSV файл, только разделитель табуляция/пробел. А если надо запятая или что-то ещё, то легко добавить другой разделитель дописав
И на выходе 1,2,4,6 колонки из него.
5) Если стоит задача отсортировать по столбцам файл foo, при чём разделитель столбцов — табуляция (параметр "-t \t"):
6) Точно не напишу, не помню потому что, но могу, если надо, рассказать как парсить ini файлы с помощью awk
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