|
|
@ -0,0 +1,117 @@
|
|
|
|
|
|
|
|
# Задания на обработку данных в bash
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 1
|
|
|
|
|
|
|
|
Вызовите `"for f in `seq 20`; do echo $RANDOM >> rnds; done"` и отсортируйте данные `rnds`, в алфавитном порядке, по возрастанию чисел.
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
sort rnds
|
|
|
|
|
|
|
|
sort -n rnds
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 2
|
|
|
|
|
|
|
|
Сохраните эти первые 10 записей датасета titanic в файл `titanic.csv` для последующих заданий:
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked
|
|
|
|
|
|
|
|
1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S
|
|
|
|
|
|
|
|
2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.2833,C85,C
|
|
|
|
|
|
|
|
3,1,3,"Heikkinen, Miss. Laina",female,26,0,0,STON/O2. 3101282,7.925,,S
|
|
|
|
|
|
|
|
4,1,1,"Futrelle, Mrs. Jacques Heath (Lily May Peel)",female,35,1,0,113803,53.1,C123,S
|
|
|
|
|
|
|
|
5,0,3,"Allen, Mr. William Henry",male,35,0,0,373450,8.05,,S
|
|
|
|
|
|
|
|
6,0,3,"Moran, Mr. James",male,,0,0,330877,8.4583,,Q
|
|
|
|
|
|
|
|
7,0,1,"McCarthy, Mr. Timothy J",male,54,0,0,17463,51.8625,E46,S
|
|
|
|
|
|
|
|
8,0,3,"Palsson, Master. Gosta Leonard",male,2,3,1,349909,21.075,,S
|
|
|
|
|
|
|
|
9,1,3,"Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)",female,27,0,2,347742,11.1333,,S
|
|
|
|
|
|
|
|
10,1,2,"Nasser, Mrs. Nicholas (Adele Achem)",female,14,1,0,237736,30.0708,,C
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 3
|
|
|
|
|
|
|
|
Выведите первую колонку, используя `awk`.
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
awk -F, '{print $1}' file.csv
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 4
|
|
|
|
|
|
|
|
Выведите содержимое файла без заголовка.
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
tail -n +2 file.csv
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 5
|
|
|
|
|
|
|
|
Выведите первую и третью колонку файла, используя `awk`.
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
awk -F, '{print $1 "," $3}' file.csv
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 6
|
|
|
|
|
|
|
|
Выведите только те строки, которые содержат строку `male` или `female`:
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
grep "female" file.csv
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 7
|
|
|
|
|
|
|
|
Отсортируйте значения `titanic.csv` по значению `Ticket` (9 колонка):
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
sort -t, -k2 file.csv
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 8
|
|
|
|
|
|
|
|
Уберите дублирующиеся строки на основании третьей колонки, используя `awk`.
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
awk -F, '!seen[$1]++' file.csv
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 9
|
|
|
|
|
|
|
|
Посчитайте сумму колонки `Fare`, используя `awk`.
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
awk -F, '{sum+=$3} END {print sum}' file.csv
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 10
|
|
|
|
|
|
|
|
Сконвертируйте файл из csv в json формат, используя `jq`.
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
jq -R -r 'split(",") | {name:.[0],age:.[1]}' file.csv
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 11
|
|
|
|
|
|
|
|
Используя `awk` сконвертируйте строки со значениями из колонок `PassengerId`, `Survived`, `Pclass` файла в набор `SQL INSERT` утверждений, которые можно использовать для импорта в SQL базу данных. Используйте `awk`.
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
awk -F, '{printf "INSERT INTO table VALUES (\"%s\", \"%s\", \"%s\");\n", $1, $2, $3}' file.csv
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 12
|
|
|
|
|
|
|
|
Конвейеры Unix позволяли организовывать сложные преобразования данных ещё до фреймворков обработки больших данных и сейчас иногда могут быть даже быстрее [Adam D. Command-line Tools can be 235x Faster than your Hadoop Cluster].
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Найдите гистограмму слов по методу mapreduce с помощью утилит и операторов конвейера. Гистограмма должна быть отсортирована по частоте встречи слова в тексте.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MapReduce выполняет следующие действия в первой фазе: разбивает содержимое файла на слова, сортирует их, каждому слову сопоставляет 1. Во второй фазе складывает единицы каждого слова, что даёт конечный результат. Используйте любой набор утилит и конструкций bash. Одно из решений задействует: `uniq`, `sort`, `cat`, `sed`.
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
cat /var/log/dpkg.log | sed 's/ /\n/g' | sort -k1 | uniq -c | sort -k1 -n
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 13
|
|
|
|
|
|
|
|
Повысьте права до пользователя root с помощью команды `su - root`. Найдите в системном логе `/var/log/auth.log` события "authentication failure", оставьте в строке только дату и имя пользователя и сохраните их в файл. Следуя правилам хорошего тона, после выполнения операций не забудьте выйти из аккаунта суперпользователя.
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
cat /var/log/auth.log | grep 'authentication failure' | sed 's/^\(.\{15\}\).*authentication failure; logname=\(\w\+\) .*/\1 \2/g'
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 14
|
|
|
|
|
|
|
|
Выведите 10 самых больших открытых файлов в системе, используя `lsof` и `awk`.
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
lsof / | awk '{ if($7 > 1048576) print $7/1048576 "MB" " " $9 " " $1 }' | sort -n -u | tail
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Man страницы
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
man awk
|
|
|
|
|
|
|
|
man lsof
|
|
|
|
|
|
|
|
man sort
|
|
|
|
|
|
|
|
man uniq
|
|
|
|
|
|
|
|
man cat
|
|
|
|
|
|
|
|
man sed
|
|
|
|
|
|
|
|
man jq
|
|
|
|
|
|
|
|
man su
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Ссылки
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Adam D. Command-line Tools can be 235x Faster than your Hadoop Cluster] https://adamdrake.com/command-line-tools-can-be-235x-faster-than-your-hadoop-cluster.html
|
|
|
|
|
|
|
|
|