Bash pipes и Unix tools для Data Engineer

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в 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
Открыть Карьерник в 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 -d

sort -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.json

Critical для 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.

Связанные темы

FAQ

Это официальная информация?

Нет. Статья основана на стандартных Unix/Bash подходах.


Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.