Bash pipes и Unix tools для Data Engineer
Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.
Содержание:
Зачем разбирать на собесе
Bash — must-have для DE. На собесе DE: «как обработать 10GB CSV без БД», «top-N records».
Pipe basics
Output одной command → input другой через |.
cat large.log | grep "ERROR" | wc -l
# count errorsПеренаправление:
>— write file.>>— append.<— read input.2>— stderr.2>&1— combine stderr to stdout.
awk
Powerful field-based processor.
# print 2nd column
awk '{print $2}' file.csv
# CSV — set delimiter
awk -F',' '{print $1, $3}' data.csv
# filter
awk -F',' '$3 > 100 {print $0}' data.csv
# sum
awk -F',' '{sum += $3} END {print sum}' data.csv
# group by
awk -F',' '{counts[$1]++} END {for (k in counts) print k, counts[k]}' data.csvЗамена SQL GROUP BY для quick scripts.
sed
Stream editor — substitution, deletion, insertion.
# replace
sed 's/old/new/g' file > new.txt
# delete lines
sed '/pattern/d' file
# print specific lines
sed -n '10,20p' fileГотовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
sort и uniq
# sort by 3rd column numerically
sort -t',' -k3 -n data.csv
# unique values count
cut -d',' -f1 data.csv | sort | uniq -c | sort -rn | head
# duplicate detection
sort file | uniq -dsort -u = sort | uniq. Faster.
jq
JSON processor.
# extract fields
cat data.json | jq '.users[].email'
# filter
jq '.users[] | select(.age > 30)' file.json
# transform
jq '{email, age}' file.json
# count
jq '.users | length' file.jsonCritical для API responses, NDJSON files.
xargs
Pass output as arguments.
# delete files matching pattern
find . -name '*.tmp' | xargs rm
# parallel processing
ls *.json | xargs -P 4 -I {} python process.py {}-P — parallelism. -I — placeholder.
Связанные темы
- Bash и Unix для Data Engineer
- Генераторы и итераторы Python для DE
- Asyncio vs threading для DE
- ETL pitfalls для DE
- Подготовка к собесу Data Engineer
FAQ
Это официальная информация?
Нет. Статья основана на стандартных Unix/Bash подходах.
Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.