Работа с CSV-файлами может быть упрощена до нескольких команд с использованием awk. Этот инструмент позволяет легко манипулировать данными, фильтровать строки и производить вычисления.
1. Чтение CSV-файлов. Предположим, у вас есть CSV-файл data.csv следующего вида:
name,age,city
Ivan,30,Moscow
Bob,25,New York
Ruslan,35,Kazan
Чтобы вывести все строки с awk, используйте:
awk -F, '{print $1, $2, $3}' data.csv
name age city
Ivan 30 Moscow
Bob 25 New York
Ruslan 35 Kazan
Здесь -F, указывает awk, что поля разделяются запятыми.
2. Фильтрация данных. Для вывода только тех строк, где возраст больше 30:
awk -F, '$2 > 30 {print $1, $2, $3}' data.csv
Ruslan 35 Kazan
3. Агрегация данных. Подсчет среднего возраста:
awk -F, 'NR>1 {sum+=$2; count++} END {print "Средний возраст:", sum/count}' data.csv
Средний возраст: 30
4. Изменение данных. Изменение формата имени в файле:
awk -F, 'BEGIN{OFS=","} {gsub(/Ivan/, "Konstantin", $1); print}' data.csv
name,age,city
Konstantin,30,Moscow
Bob,25,New York
Ruslan,35,Kazan
5. Конвертация CSV в JSON. Вы можете преобразовать CSV в JSON-формат:
awk -F, 'NR==1 {for(i=1;i<=NF;i++) header[i]=$i} NR>1 {printf "{"; for(i=1;i<=NF;i++) printf "\"%s\":\"%s\"%s", header[i], $i, (i==NF ? "" : ","); print "}"}' data.csv
Вывод:
{"name":"Ivan","age":"30","city":"Moscow"}
{"name":"Bob","age":"25","city":"New York"}
{"name":"Ruslan","age":"35","city":"Kazan"}
awk позволяет легко фильтровать, модифицировать и анализировать данные, что делает его незаменимым в арсенале каждого администратора и разработчика.
BashTex 📱 #linux #utils