Bash:
Чтение текстового файла
Как:
Вот самый простой способ построчного чтения файла:
while IFS= read -r line; do
echo "Текст: $line"
done < "yourfile.txt"
Хотите прочитать весь файл сразу? Попробуйте это:
file_content=$(<yourfile.txt)
echo "$file_content"
Или вам нужна конкретная строка, скажем, строка 4?
sed '4q;d' yourfile.txt
Пример вывода при чтении строки 4:
Это содержимое четвертой строки.
Погружение
В старые времена, когда у нас не было изысканных IDE, были терминалы и простые текстовые редакторы. Инструменты UNIX были задуманы с философией хорошо делать одно дело. cat
, less
, sed
и awk
- ветераны по манипуляции с текстом.
Чтение файла в Bash использует эти инструменты, плюс собственные перенаправления и циклы Bash. Например, использование while
с read
хорошо для эффективности памяти с большими файлами. Вы читаете строку за строкой, не выгружая все в память.
sed
- это редактор потока. Захват конкретной строки с помощью sed '4q;d' yourfile.txt
говорит sed
остановиться после 4 строки (4q
) и затем напечатать (;d
) эту строку.
Существуют альтернативы. awk
мощный для обработки текста. Скрипты Perl и Python могут быть вызваны внутри Bash, когда обработка текста становится сложной. У каждого из этих инструментов и языков есть свои случаи использования и соображения по производительности.
Смотрите также
- Руководство по программированию на Bash: https://www.gnu.org/software/bash/manual/
sed
иawk
101 Хитрости: https://www.thegeekstuff.com/2009/12/unix-sed-tutorial-6-examples-to-edit-file-in-place/- Обработка текста в командной строке Linux с помощью
grep
,awk
,sed
,sort
и друзей: https://github.com/learnbyexample/Command-line-text-processing