Вы можете оказаться в ситуации, когда вам нужно использовать скрипт шелла для чтения файлов построчно.
В этом руководстве я расскажу о нескольких способах чтения файлов построчно в скриптах bash.
Чтение файла построчно на bash
В этом руководстве мы покажем вам о двух способах написания сценария bash, с помощью которого вы сможете читать файл построчно:
- Использование команды read с циклом while
- Использование команды cat с циклом while
Для простоты понимания мы будем использовать простой текстовый файл с именем LHB.txt, который содержит следующее:
1. Ubuntu
2. Arch
3. openSUSE
4. Fedora
5. Slackware
1. Использование команды read с циклом while
Как следует из названия метода, здесь мы будем использовать команду read с циклом while (разумеется, внутри скрипта).
Сначала создайте и откройте простой файл скриптас помощью следующей команды:
nano read.sh
И вставьте следующие строки:
#!/bin/bash
file="LHB.txt"
while read -r line; do
echo -e "$line\n"
done <$file
Вот,
- file=”LHB.txt”: Указывает, с каким файлом я хочу работать, и в моем случае это LHB.txt.
- while read -r line; do: Запускает цикл while и читает строки одну за другой, пока не останется ни одной строки для чтения, а флаг -r предотвратит обратную косую черту в строках.
- echo -e “$line\n”: Будет выведена каждая строка, и каждая будет отделена одной пустой строкой.
- done < “$file”: Перенаправляет ввод из указанного файла в цикл while.
И, наконец, выполните скрипт:
./read.sh
2. Использование команды cat с циклом while
В этом методе мы будем использовать команду cat для чтения файла, что сделает логику цикла простой для понимания.
Вот скрипт, который мы будем использовать:
#!/bin/bash
cat LHB.txt | while IFS= read -r line; do
echo "$line"
echo # Print a blank line
done
Вот,
- cat LHB.txt |: Читает содержимое файла LHB.txt и передает его в piped другим аргументом.
- while IFS= read -r line; do: Читает строки одну за другой из файла LHB.txt и. IFS используется для сохранения ведущих и завершающих пробельных символов.
- echo “$line”: Выводит строку, хранящуюся в переменной line.
см. также:
- 📜 Получение вчерашней даты в Bash: Практическое руководство
- 🐧 Что означает -z на Bash
- 🐧 Проверка, содержит ли переменная число на Bash
- 📜 Сравнение строк на Bash
- 📜 Преобразование символов в нижний регистр на Bash – проще, чем вы думаете
- 🐧 Bash скрипты: Пример установки переменных