Kodomo

Пользователь

UNIX: работа с текстовыми данными

Два слова про пути

дописать #!/usr/bin/python в начало prog.py

chmod +x prog.py

which

./prog.py

Работа с текстовыми данными в UNIX

head file.txt

head -n 10 file.txt

head -c 100 file.txt

tail -n 10 file.txt

tail -c 10 file.txt

head -n -2 file.txt

tail -n +2 file.txt

команда | команда

head -n 30 file.txt | tail -n 10

sort file.txt

echo 1 >> numbers.txt echo 2 >> numbers.txt echo 10 >> numbers.txt echo 11 >> numbers.txt echo 20 >> numbers.txt echo 100 >> numbers.txt

sort numbers.txt

sort -n numbers.txt

man sort

sort -n -r numbers.txt

sort -nr numbers.txt

sort -n numbers.txt -r

sort numbers.txt -rn

sort file.txt | uniq

sort file.txt | uniq -c

sort file.txt | uniq -c | sort -n

sort file.txt | uniq -c | sort -n | tail -n 1

кавычки можно и , и ""; "" ведут себя как обычные в питоне, ведут себя как питонские r (ПРИБЛИЗИТЕЛЬНО!)

tr 'множество1' 'множество2'

cat file.txt | tr ' ' '\n'

cat file.txt | tr ' ' '\n' | sort | uniq -c | sort -n | tail -n 1

cat file.txt | tr ' ' '\n' | sort | uniq -c | sort -n -r | head

egrep: был ed, команда g/регулярка/ + команда p была популярна, её функциональность выделили в отдельную утилиту: gREp (grep). У неё был синтаксис регулярок времён 70-х годов. Привычнее нам (и правильнее) синтаксис extended => egrep.

grep 'word' file.txt

grep '<a [^>]*>' file.txt

grep -o '<a [^>]*>' file.txt

grep -o '</?a( [^>]|)>' file.txt

grep -v 'word' file.txt

grep -v '^$' file.txt

cat file.txt | tr ' ' '\n' | grep -v '^$' | sort | uniq -c | sort -n -r | head

grep 'word' *

grep -l 'word' *

grep -rl 'word' *

grep -l 'word' * > matching_filenames.txt

NB: ошибки пишутся в stderr, а данные пишутся в stdout, поэтому в файл попадут только содержательные данные, а на экране останутся сообщения об ошибках. В питоне в модуле sys есть sys.stdout и sys.stderr ведут себя как файлы (можно sys.stderr.write()). print пишет в stdout.

Flask: формы

...
<form action="куда отсылать">
<input name="имя переменной" value="наполнение по умолчанию">
<input type="submit" name="имя переменной" value="текст на кнопочке">
</form>
...

from flask import ..., request

@app.route(...)
def ...
    value = request.args['имя переменной']
    ...