Предпосылки:
Вы должны создать файл CSV, прежде чем практиковать пример этого руководства. Создайте файл CSV с именем «customers.csv» со следующим содержимым, чтобы проверить выходные данные сценария, используемого в этом руководстве. В этом файле 3 рд поля 4 й линия и 6 й строка пуста.
ID, имя, электронная почта, адрес, мобильный101 , Джафар Икбал, Джафар @ gmail.com, 9 / Дханмонди Дакка, + 8801762341425
102 , Камаль Хоссейн, Камаль @ gmail.com, 120 Мирпур Дакка, 8801988675345
103 Нироб Чоудхури 33 / 2 Джигатола Дакка, 8801754532312
104 Фархин Хасан @ gmail.com < а href '=' 'пустой' > , а > 10 Кадхалбагун Дакка, + 8801512875634
105 , Мд. Рахим,, 2 / Б Дханмонди Дакка, + 8801700453423
Различные способы чтения файла CSV в Bash
Файл CSV можно анализировать различными способами с помощью сценария Bash. В этой части руководства показаны различные способы чтения файла «customers.csv».
Пример 1. Чтение исходного содержимого CSV-файла
Создайте файл Bash со следующим скриптом, который считывает полное содержимое файла «customers.csv» с помощью цикла «пока»:
#!/бин/баш
#Установить имя файла
имя файла '=' 'клиенты.csv'
#Читать каждую строку файла на каждой итерации
пока читать данные
делать
#Распечатать строку
эхо $данные
сделанный < $filename
После выполнения скрипта появляется следующий вывод:
Пример 2. Чтение CSV-файла с использованием заглавных букв в заголовке
Первая строка файла «customers.csv» содержит заголовок файла. Создайте файл Bash со следующим сценарием, который печатает содержимое файла «customers.csv» после заглавной буквы в первой строке файла. Команда «awk» используется в скрипте для печати содержимого файла после написания заголовка с заглавной буквы. Запятая (,) назначается в значениях FS и OFS в сценарии для чтения файла «customers.csv» и записи файла «updatedcustomers.csv». Команда «cat» используется для печати содержимого обоих файлов.
printf 'Исходный файл: \n '#Распечатать исходное содержимое CSV-файла
кот cstomers.csv
#Создать новый файл CSV после заглавных букв
аук 'НАЧАЛО {FS=',';OFS=','}
{
если(NR==1)
распечатать топпер($0)
еще
Распечатать
}' клиенты.csv > обновленныйcustomers.csv
printf ' \n Измененный файл: \n '
# Распечатайте новый файл CSV
кот обновленныйcustomers.csv
После выполнения скрипта появляется следующий вывод:
Пример 3. Замените пустое поле CSV-файла на «Нет».
Создайте файл Bash со следующим сценарием, который печатает содержимое файла «customers.csv» после изменения пустого поля со значением «Нет». В этом файле пусты два поля, о которых говорится ниже. Команда «awk» используется в сценарии для печати содержимого файла после изменения пустых полей. Запятая (,) назначается в значениях FS и OFS в сценарии для чтения файла «customers.csv» и записи файла «updatedcustomers.csv». Команда «cat» используется для печати содержимого обоих файлов в табличном формате.
printf 'Исходный файл: \n '#Распечатать исходное содержимое CSV-файла в виде таблицы
кот клиенты.csv | столбец -s, -т
аук 'НАЧАЛО {FS=',';OFS=','}
{
для (поле = 1; поле <= NF; поле ++)
{
если ($ поле == '') $ поле = 'Нет'
}
Распечатать
}' клиенты.csv > модифицированные клиенты2.csv
printf ' \n Измененный файл: \n '
#Распечатать новый файл CSV в виде таблицы
кот модифицированные клиенты2.csv | столбец -s, -т
После выполнения скрипта появляется следующий вывод:
Пример 4. Распечатайте общее количество строк и столбцов CSV-файла
Создайте файл Bash со следующим сценарием, который подсчитывает общее количество строк и столбцов в файле «customers.csv». Переменная NR используется для печати общего количества строк файла. Переменная NF используется для печати общего количества полей файла.
printf 'Исходный файл: \n '#Распечатать исходное содержимое CSV-файла
кот клиенты.csv
эхо
эхо -н 'Всего строк:'
аук -Ф, 'КОНЕЦ{печатать NR}' клиенты.csv
эхо -н 'Всего столбцов:'
аук -Ф, 'КОНЕЦ{печать НФ}' клиенты.csv
Следующий вывод появляется после выполнения скрипта. Всего строк в файле 6, а всего полей файла 5, которые выводятся на выходе:
Заключение
В этом руководстве показаны методы чтения CSV-файла, изменения CSV-файла и подсчета строк и столбцов CSV-файла с помощью сценария Bash.