Linux read txt file

Unix Tutorial #3: Reading Text Files¶

The command line is useful for both viewing and manipulating text files. Manipulation means editing text — for example, replacing words in text files, or appending text from the command line to the end of a file (also known as redirection). This is useful for creating scripts, text files containing one or more commands that are run consecutively. In later tutorials, you will use these techniques to automate your analyses, which can save enormous amounts of time.

You can display the contents of a file using the cat command, which stands for concatenate. Let’s say we have a file on our Desktop called myFile.txt, which contains the words one through fifteen (i.e., one, two, three…fifteen), with each number on a separate line. Use the command line to navigate to the Desktop, and then type cat myFile.txt . This will print the contents of the file to your command line. This is the same idea as using the GUI to double-click on the text file to see its contents.

../_images/Cat_File.png

Using the command line and the GUI to read the contents of a text file. On the left is the command line using the cat command, which prints the contents to the Terminal. On the right is the contents of the file displayed after using the mouse to double-click the file.

We refer to the output from this command as stdout, or standard output. The commands that are typed into the Terminal are called stdin, or standard input. This touches on the concept of streams, or the flow of information into and out of the command line, and we will use these ideas to give us more flexibility in manipulating text files. For now, think of stdin as anything you type into the Terminal, and stdout as what is returned if the command is run without any errors. If the command that you type does result in an error — for example, because the command was misspelled or because not enough arguments were provided — the text that is output to the Terminal is called stderr, or standard error.

../_images/Streams.png

Illustration of streams in Unix. Whatever is typed into the Terminal is stdin, and, if it runs without error, whatever is output is called stdout. If there is an error, the output is instead called stderr.

The cat command is useful for viewing the contents of smaller files, but if the file contains hundreds of lines of text, it is overwhelming to have everything printed to the Terminal at once. To see only a part of the file, we can use the commands head and tail to see the first few or the last few lines of the file, respectively. Using myFile.txt as an example, typing

Читайте также:  Linux kernel module dkms

Would return the first five lines; whereas typing

Would return the last five lines. Although the default is to return five lines, these commands have an option to display any amount of lines that you choose. For example,

head -10 myFile.txt tail -10 myFile.txt 

Would return the first ten lines and the last ten lines. Try these out yourself, changing the number of lines that are displayed.

Redirection¶

In addition to displaying the results of a command, stdout can be used to move or append the output to a file, a concept known as redirection. For example, if you type

The word “sixteen” goes into the file tmp.txt instead of being written to standard output. Notice that it creates the file tmp.txt even if it doesn’t exist. However, if we try that again with another string — for example,

It will overwrite the file with whatever we printed to standard output. If you want to append standard output to the end of a file without overwriting the other data in the file, use two greater-than signs. For example, type

If you type cat tmp.txt , you will see both seventeen and eighteen.

Although these examples are trivial, redirection is invaluable for quickly editing text files and for writing scripts, which allow you to run analyses for hundreds or thousands of subjects with only a few lines of code.

Video¶

Click here for a video walkthrough of commands for reading text files. This video will also show you how to read help files using the less command and a paging window.

Exercises¶

  1. Create a new file called “tmp.txt” and type whatever you want into the file. Use cat to string together both the myFile.txt and tmp.txt files, and redirect the output to create a new file. Print the contents of the new file to stdout.
  2. If you have AFNI installed on your machine, use less on the command 3dcalc to find strings matching “Example.” Now try it using the less command with an option to ignore whether the letters in the string are upper case or lower case. Hint: To find this option, search for the string “case” in the man file for less . (If you have FSL installed instead of AFNI, try the same exercise with the command fslmerge .)
  3. Unix has a built-in command called sort which will sort text numerically or alphabetically. What happens when you use myFile.txt as an argument for sort ? What about typing this command:
Читайте также:  Linux test web camera

In your own words, explain the difference between the two methods.

© Copyright 2019, Andy Jahn Revision cb9a0b41 .

Versions latest stable Downloads On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.

Источник

Sysadminium

На этом уроке по Linux мы рассмотрим создание (touch), редактирование (nano) и чтение (cat, tac, grep, less, tail) текстовых файлов.

Создание файлов и просмотр их в каталоге

Все примеры я буду показывать на Debian 11, так как на Ubuntu 22.04 все выполняется аналогично. Вообще в Linux работа в терминале на любых системах практически одинакова. Поэтому создание, редактирование и чтение файлов можно продемонстрировать на любой системе.

Для создания текстового файла служит команда touch:

С помощью команды ls можно посмотреть какие файлы есть в каталоге:

Для команды ls есть дополнительные опции:

  • -l — показывает информацию по каждому файлу;
  • -h — показывает размер файла в удобном для человека виде (байты, килобайты, мегабайты и т.д.). Эту опцию можно использовать только вместе в -l.

Опции можно писать слитно (ls -lh) или раздельно (ls -l -h). Вот пример:

alex@deb:~$ ls -lh итого 0 -rw-r--r-- 1 alex alex 0 ноя 26 16:15 file.txt

Команда touch не только создает файл, но если этот файл уже есть, то обновляет время доступа и модификации данного файла:

alex@deb:~$ touch file.txt alex@deb:~$ ls -lh итого 0 -rw-r--r-- 1 alex alex 0 ноя 26 16:17 file.txt

Как вы могли заметить вначале время последнего изменения файла было 16:15, а после выполнения команды touch оно изменилось на 16:17. На самом деле команда touch не изменила файл, она лишь прикоснулась к файлу и тем самым изменила его время доступа. Кстати, с английского touch переводится как прикасаться.

Давайте теперь разберём вывод команды ls -lh:

Тип файла | Права | | Кол-во ссылок | | | Владелец | | | | Группа | | | | | Размер | | | | | | Дата и время последнего касания или изменения | | | | | | | Имя файла | | | | | | | | - rw-r--r-- 1 alex alex 0 ноя 26 16:17 file.txt

Пока что вам нужно запомнить что таким образом можно посмотреть размер файла и дату его изменения, с остальным разберемся позже. И ещё запомните 2 типа файлов:

  • знак тире «-« — это обычный файл;
  • символ «d» — это каталог;
  • есть и другие типы файлов, но пока их рассматривать не будем.

Редактирование файлов

Отредактировать текстовый файл можно с помощью текстового редактора «nano»:

После выполнения этой команды у Вас откроется текстовый редактор:

Для того чтобы сохранить этот файл нужно нажать комбинацию клавиш «Ctrl+o«.

А чтобы закончить редактирование и закрыть этот файл нужно нажать «Ctrl+x«. При этом у вас спросят, хотите ли вы сохранить этот файл и если да, то нужно ввести «y» и нажать клавишу «Enter«. Таким образом необязательно использовать комбинацию «Ctrl+o» перед закрытием файла.

Читайте также:  Linux terminal переименовать файл

Внизу я выделил подсказки текстового редактора Nano, в подсказках символ «^» — это клавиша Ctrl.

Если с помощью nano открыть несуществующий файл, то файл будет создан как только вы его сохраните. Поэтому выполнять touch перед nano не обязательно.

Чтение файлов

Команды cat и tac

Давайте теперь научимся читать текстовые файлы. Чаще всего для этого используется команда cat:

alex@deb:~$ cat file.txt И тут мы можем вводить текст, какой только пожелаем.

У команды cat есть опция -n, которая выводит номера строк:

alex@deb:~$ cat -n file.txt 1 И тут мы можем 2 вводить текст, 3 какой только пожелаем.

Для команды cat есть команда перевёртыш, это команда tac. Она выводит текст задом наперед:

alex@deb:~$ tac file.txt какой только пожелаем. вводить текст, И тут мы можем

Команда grep

Если Вам нужно что-то найти в тексте, то для этого используйте команду grep. Например, мы ищем строку в которой встречается слово «какой»:

alex@deb:~$ grep какой file.txt какой только пожелаем.

Команда less

Если текст длинный то вместо cat лучше использовать команду less:

alex@deb:~$ less /etc/ssh/sshd_config

Используя less мы можем кнопками вверх / вниз перемещаться по тексту:

Если нажать кнопу «/», то откроется строка, куда можно ввести фразу для поиска в этом файле. Давайте, например, найдём строку со словом «Port»:

При поиске удобно использовать кнопку «n» для дальнейшего поиска введенной фразы, и комбинацию «Shift+n» для поиска в обратном направлении (к началу файла). Для выхода из программы используйте клавишу»q«.

Команды tail и head

Если Вам нужно посмотреть последние строки файла используйте команду «tail«:

alex@deb:~$ tail /etc/ssh/sshd_config # override default of no subsystems Subsystem sftp /usr/lib/openssh/sftp-server # Example of overriding settings on a per-user basis #Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # PermitTTY no # ForceCommand cvs server

А если нужно посмотреть первые строки файла то команду «head«:

alex@deb:~$ head /etc/ssh/sshd_config # $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $ # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. # This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options override the

Эти две команды выводят 10 последних (tail) или 10 первых (head) строк файла. И у этих команд есть параметр -n, с помощью которого можно указать сколько строк выводить, например выведем по 3 строки:

alex@deb:~$ tail -n 3 /etc/ssh/sshd_config # AllowTcpForwarding no # PermitTTY no # ForceCommand cvs server alex@deb:~$ head -n 3 /etc/ssh/sshd_config # $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $ # This is the sshd server system-wide configuration file. See

А ещё команда tail позволяет выводить изменяющиеся файлы, например логи. Для этого используется опция -f. Чтобы закончить наблюдение за файлом, нужно нажать комбинацию Ctrl+c.

Источник

Оцените статью
Adblock
detector