Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SShirykalov/hw2 #907

Open
wants to merge 3 commits into
base: SShirykalov/main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions popular_cities.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/bin/bash

echo "3 самых популярных города среди пользователей"

# Проверяем наличие аргумента
if [ $# -eq 0 ]; then
echo "Необходимо передать имя файла в качестве аргумента!"
exit 1
fi

# Выводим три самых популярных города
# awk '{print $3}' $1 - выводим третий столбец из заданного файла (столбец с городами)
# sed 1d - удаляем строку с заголовком столбца
# sort - сортируем города, необходимо для нормальной работы команды uniq
# uniq -c - выводим уникальные города с количеством вхождений
# sort -nrk1 - сортируем по столбцу количества (-k1) как числа (-n) в обратном порядке (-r)
# head -n3 - оставляем только 3 первых строки
# awk '{print $2}' - выводим только названия городов (обрезаем количество их вхождений)

awk '{print $3}' $1 | \
sed 1d | \
sort | \
uniq -c | \
sort -nrk1 | \
head -n3 | \
awk '{print $2}'

40 changes: 40 additions & 0 deletions sum.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/bin/bash

# Проверяем наличие аргументов
if [ $# -ne 2 ]; then
echo "Необходимо передать два аргумента!"
exit 1
fi

# Проверяем валидность аргументов
REGEX="^[+-]?[0-9]+([.][0-9]+)?$"
if [[ ! (($1 =~ $REGEX) && ($2 =~ $REGEX)) ]]; then
echo "Оба аргумента должны быть числами!"
exit 1
fi

# Перенаправляем вывод ошибок, чтобы не видеть ошибку, если bc не установлен
exec 2>/dev/null

# Пробуем запустить bc
bc -v >/dev/null

if [ $? -ne 0 ]; then # Если код возврата не 0, значит, bc не установлен,

# Перенаправляем вывод ошибок обратно в stdout
exec 2>&1

# устанавливаем bc
read -n 1 -p "Для выполнения сложения необходимо установить bc. Установить? (y/n)? " answer
if [ $answer == 'y' ] || [ $answer == 'Y' ]; then
sudo apt install bc
else
exit 1
fi
fi

# Выполняем сложение c использованием bc
result=$(echo $1 + $2 | bc)

# Выводим результат
echo "Сумма чисел равна: $result"
21 changes: 21 additions & 0 deletions sum2.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/bin/bash
# Сложение двух вещественных чисел без использования bc (с использованием awk)

# Проверяем наличие аргументов
if [ $# -ne 2 ]; then
echo "Необходимо передать два аргумента!"
exit 1
fi

# Проверяем валидность аргументов
REGEX="^[+-]?[0-9]+([.][0-9]+)?$"
if [[ ! (($1 =~ $REGEX) && ($2 =~ $REGEX)) ]]; then
echo "Оба аргумента должны быть числами!"
exit 1
fi

# Выполняем сложение c использованием awk
result=$(echo $1 $2 | awk '{printf $1 + $2}' )

# Выводим результат
echo "Сумма чисел равна: $result"
11 changes: 11 additions & 0 deletions user_cities.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
id user city phone
1 test Moscow 1234123
2 test2 Saint-P 1232121
3 test3 Tver 4352124
4 test4 Milan 7990923
5 test5 Moscow 908213
6 test6 Saint-P 908213
7 test7 Moscow 908213
8 test8 Saint-P 908213
9 test9 Milan 908213
10 test10 Moscow 908213