Как я могу отобразить содержимое текстового файла в командной строке?

Вопрос или проблема

Я хочу отобразить содержимое текстового файла в командной строке. Файл содержит всего 5-6 символов. Есть ли простой способ сделать это?

Используя cat

Поскольку ваш файл короткий, вы можете использовать
cat.

cat имя_файла

Используя less

Если вам нужно просмотреть содержимое более длинного файла, вы можете использовать постраничный просмотр, такой как
less.

less имя_файла

Вы можете сделать так, чтобы less работал как cat, когда вызывается для небольших файлов, и вел себя нормально в противном случае, передав ему флаги -F и -X.

less -FX имя_файла

У меня есть псевдоним для less -FX. Вы можете создать свой собственный вот так:

alias имя_псевдонима="less -FX"

Если вы добавите псевдоним в вашу конфигурацию оболочки, вы сможете использовать его
вечно.

Используя od

Если ваш файл содержит странные или нечитаемые символы, вы можете использовать
od для изучения символов. Например,

$ cat файл
(ÐZ4 ?o=÷jï
$ od -c тест
0000000 202 233   ( 320   K   j 357 024   J 017   h   Z   4 240   ?   o
0000020   = 367  \n
0000023

Хотя все используют cat имя_файла для вывода текста файла в стандартный вывод, основное назначение — это сшивание.
Из страницы man для cat:

cat – соединить файлы и вывести на стандартный вывод

Теперь cat подходит для печати файлов, но есть альтернативы:

  echo "$(<имя_файла)"
или
  printf "%s" "$(<имя_файла)"

Знаки ( ) возвращают значение выражения, в данном случае содержимое имя_файла, которое затем расширяется с помощью $ для echo или printf.

Обновление (для zsh):

< имя_файла

Это делает именно то, что вам нужно, легко запоминается, но не работает в bash.

Вот пример, который позволяет вам выбрать файл в меню, а затем распечатать его.

#!/bin/bash

select fname in *;
do
# Не забудьте "" вокруг второй части, иначе переводы строк не будут напечатаны
  printf "%s" "$(<$fname)"
  break
done

Для дальнейшего чтения:
BashPitfalls – cat file | sed s/foo/bar/ > file
Справочник Bash – Перенаправление

Инструменты для работы с текстовыми файлами в Unix — это базовые, повседневные команды:

В Unix и Linux для вывода всего содержимого файла

cat имя_файла.txt

или

more имя_файла.txt

или

less имя_файла.txt

Для последних нескольких строк

tail имя_файла.txt

Для первых нескольких строк

head имя_файла.txt

Вы можете использовать следующую команду для отображения содержимого текстового файла.

cat имя_файла 

Одним из вариантов является использование more

например, more файл.txt

Однако у него нет всех функций, добавленных less.
Простой пример заключается в том, что вы не можете прокрутить обратно в выводе. Обычно он был заменен на less – что было названо в шутку, потому что

less — это больше

Я всегда использую $ less "ваш файл здесь", так как это очень просто, предоставляет встроенную интерактивную команду grep и дает вам простой в использовании интерфейс, который можно прокручивать с помощью стрелок.

(Он также включен почти в каждую систему *nix)

Если это большой файл, и вы хотите найти какую-то конкретную часть, вы можете использовать

 cat имя_файла | grep текст_для_поиска -ni 

Также вы можете использовать более интерактивный редактор Vim (или редактор vi, если у вас нет Vim):

 vim имя_файла
Или
 vi имя_файла

Vim/vi — отличный редактор, его также можно использовать в качестве ридера в “Нормальном режиме” или с помощью опции -R, у него есть много функций, которые помогут вам просматривать файл.

Используйте команду cat, чтобы отобразить содержимое имени файла.

cat имя_файла  

Используйте команду vim, чтобы отредактировать файл.

vim имя_файла

Perl:

~$ perl -pe ''  Сонет_18.txt

Raku:

~$ raku -pe ''  Сонет_18.txt

Пример вывода:

Должен ли я сравнить тебя с летним днем?
Ты более прекрасен и более умерен.
Суровые ветры трясут милые почки мая,
И аренда лета имеет слишком короткий срок.
Иногда слишком жарко светит око небесное,
И часто его золотой цвет тускнеет;
И каждый красавец из красавиц иногда угасает,
По воле случая или изменчивого течения природы.
Но твое вечное лето не увянет
Ни утратит владение той красотой, которую ты имеешь,
Или Смерть будет хвастаться, что ты бродишь в его тени,
Когда в вечных строках ко времени ты растешь.
 Пока мужчины могут дышать или глаза могут видеть,
 Так долго будет это, и это дает жизнь тебе.

Очевидно, cat будет самым популярным ответом на этот вопрос, но приведенные выше примеры кода также обеспечат желаемый вывод (файл любезно предоставлен Шекспиром, через Проект Гутенберг). Однако изучение основных однострочных команд, используя Perl и/или Raku, имеет свои преимущества, просто потому, что с их помощью можно сделать очень много работы.

Искать в файле, возвращать совпадающие строки:

~$ #Perl:
~$ perl -ne 'print if /вечный/'  Сонет_18.txt
Но твое вечное лето не увянет
Когда в вечных строках ко времени ты растешь.

~$ #Raku:
~$ raku -ne '.put  if /вечный/'  Сонет_18.txt
Но твое вечное лето не увянет
Когда в вечных строках ко времени ты растешь.

Заменить один фрагмент текста на другой, перенаправить вывод в новый файл:

~$ #Perl:
~$ perl -pe 's/вечный/вечность/g'   Сонет_18.txt > новый_сонет.txt

~$ #Raku:
~$ raku -pe 's:g/вечный/вечность/'  Сонет_18.txt > новый_сонет.txt

Наконец, если вы столкнетесь с проблемами с символами Unicode в ваших файлах, Raku – хороший инструмент, который стоит держать под рукой, поскольку он был создан с нуля для работы с кодировкой UTF-8. См. последний URL ниже для получения деталей.

https://perldoc.perl.org
https://docs.raku.org
https://docs.raku.org/language/unicode

.

Ответ или решение

Для вывода содержимого текстового файла в командной строке существует несколько простых и эффективных методов.
Если ваш файл небольшой, содержащий всего 5-6 символов, вы можете воспользоваться следующими командами:

1. Использование команды cat

Команда cat (сокращение от concatenate) является самой распространенной для отображения содержимого файла. Она предназначена для соединения нескольких файлов и вывода их на стандартный вывод. Чтобы вывести содержимое вашего текстового файла, выполните:

cat filename.txt

Это самый прямой и простой способ. В вашем случае, когда файл маленький, вывод будет моментальным.

2. Использование команды less

Если вы хотите иметь возможность прокручивать содержимое файла, особенно если файл будет больше, подходит команда less.

less filename.txt

less позволяет не только просматривать, но и осуществлять поиск по тексту, что может быть полезно для более крупных файлов. При использовании less вы можете использовать клавиши стрелок для навигации по файлу. Вы можете добавить параметры -F и -X, чтобы less вел себя как cat для кратких файлов:

less -FX filename.txt

3. Использование команды head и tail

Если вам нужно увидеть только первые или последние несколько строк файла, вы можете использовать команды head и tail:

head filename.txt   # Для вывода первых 10 строк файла
tail filename.txt   # Для вывода последних 10 строк файла

Эти команды также позволяют указать количество строк, которые нужно вывести:

head -n 5 filename.txt   # Первые 5 строк
tail -n 5 filename.txt   # Последние 5 строк

4. Использование команды more

Хотя more является более устаревшей командой, чем less, она также может быть использована для просмотра содержимого файла:

more filename.txt

more предоставляет базовые функции прокрутки, однако она не позволяет прокручивать обратно, что делает ее менее предпочтительным выбором по сравнению с less.

5. Использование Perl или других скриптовых языков

Если у вас есть опыт работы с Perl или Raku, вы можете воспользоваться ими для отображения содержимого файла:

perl -pe '' filename.txt

Или для Raku:

raku -pe '' filename.txt

Эти команды предоставят аналогичный вывод с помощью простейших скриптов.

Заключение

В зависимости от ваших нужд вы можете выбрать наиболее подходящий для вас метод. Если вы работаете с небольшими текстовыми файлами, команда cat станет самым простым и быстрым решением. Для больших файлов стоит рассмотреть less, head и tail для более удобного управления выводом. Используя Perl или Raku, вы получите дополнительные функции, которые могут быть полезны для более сложных задач.

Оцените материал
Добавить комментарий

Капча загружается...