Как манипулировать файлами и строками с помощью консоли

1656536772 kak manipulirovat fajlami i strokami s pomoshhyu konsoli

Лучано Стрика

WmTHF8Xb-NAT1dLhH3RnU46x8lo5RnUA2TNK
Программирование заставит вас поразиться Космосом. Источник: Pixabay.

Как разработчики, мы каждый день делаем много повторяющихся вещей, которые отнимают наше драгоценное время. Поиск способов автоматизации и оптимизации этих процессов обычно очень прибыльен.

Много раз мы перебираем исходные данные программы в поисках соответствующих битов и вручную перемещаем их в другой файл, изменяя все прописные буквы из предложения на строчные, или удаляя все нечисловые символы из файла. Таких скучных, повторяющихся и подверженных ошибкам задач, которые могут накапливаться, если мы выполняем их вручную, и обернуться большой головной болью.

Общепринято мнение, что мы должны делать эти вещи программно, а не вручную. Много раз проблема попадает в это сладкое место, где кодирование целого сценария для него, даже на Python, кажется излишним. Выполнение дела вручную займет слишком много времени или приведет к слишком большому количеству ошибок.

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

Так что без лишних разговоров позвольте мне представить вам самые полезные заклинания, которые должен знать любой мастер кодировки.

echo: чтобы строка появилась в консоли

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

echo “hello world!”

выведет следующий результат:

hello world!

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

cat: Отображение настоящей формы ввода

Вызов команды cat для файла выведет его содержимое в терминал.
Например, у нас есть каталог, содержащий файлы ‘file1.txt’ и ‘file2.txt’. Оба файла содержат текст «это файл». Звонок:

cat file1.txt

выведет содержимое файла:

this is a file

Обратите внимание, что аргументом для команды cat может быть любое название стиля оболочки. Мы можем использовать символ подстановки*, чтобы соответствовать любой строке. Таким образом, мы можем выводить содержимое различных файлов один за другим, например:

cat *.txt

В этом случае * соответствует как file1, так и file2, и оба они заканчиваются на .txt, поэтому они оба печатаются. Вывод этой команды будет

this is a filethis is a file

Запомните эту команду – ни один чернокнижник не обходится без котенка.

grep: найти иглу в стоге сена

Переходя на гадание, grep – это заклинание для поиска подстроки в строке.
Звонок

grep <some string> filename

выведет каждую строку указанного файла, где появляется данная строка.

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

Если мы называем его для разных файлов одной командой, мы получим список каждого файла со строками, соответствующими шаблону. Например, в предыдущем каталоге, вызов

grep “this” *.txt

будет уступать

file1.txt: this is a filetile2.txt: this is a file

sed: превращение строки в другой

Команда sed – это заклинание трансмутации. Он берет содержимое файла и превращает его в разные. Существует множество способов его использования. Некоторые из них, признаюсь, мало знаю. (Если вы читаете это и думаете о каких-то крутых вещах, которые делает sed, о которых я не упоминаю, расскажите мне в комментариях, поскольку я люблю изучать новые трюки). Одним из наиболее распространенных является замена соответствующих шаблона частей струны на другие струны.

Это делается путем звонка

sed “s/regexp/replacement/optional_flags” file_name

Это позволит:

  • Найдите в файле file_name каждую строку, соответствующую регулярному выражению
  • Сначала замените эту строчку регулярное выражение экземпляр с замена
  • Выведите полученную строку на консоль (не изменяя файл!).

Если мы поставим флаг g в конце (например, s/old/new/g), он будет соответствовать всем экземплярам в каждой строке, а не только первой. Использование аргумент (для in-place) на самом деле будет записан во входящий файл.

Как пример, звонок

sed “s/is/was/g” file1.txt

выведет

thwas was a file

Если мы хотим найти соответствие только целым словам, мы должны поместить символ b, окружающий регулярное выражение, таким образом

sed “s/\bis\b/was/g” file1.txt

чтобы наконец получить

this was a file

Сочетание наших заклинаний: Операторы

Теперь вы владеете четырьмя новыми школами магии, каждая со своими характерными заклинаниями. Но чтобы стать настоящим волшебником, вы должны научиться завязывать нити магии в удивительные узоры. Для этого вы будете использовать три мощных инструмента.

| (Труба) Оператор

Оператор канала принимает исходные данные предыдущей команды и записывает их на вход следующей команды, создавая конвейер.
Например, звонить

cat *.txt | grep “is”

сначала получит содержимое всех текстовых файлов в текущем рабочем каталоге. Затем найдите каждую строку, содержащую строку «is», прежде чем наконец-то напечатать их.

> (написать) Оператор

Оператор записи запишет свой вход в свой выход обычно в файл.

Так, например, быстрый способ создать текстовый файл с содержимым «это файл» – это вызов.

echo “this is a file” > some_file.txt

Видите, как на самом деле складывается вся эта штука с заклинаниями? Я сказал вам, что это будет полезно.

Обратите внимание, что если файл уже существовал, это перезапишет его содержимое, даже не спрашивая. Если это не то, что мы хотели, мы должны использовать наш последний инструмент:

>> (добавить) Оператор

Оператор запишет свой вход в свой выход, за исключением того, что он не перезапишет то, что уже в нем.

Вот и все, мы закончили этот учебник, и вы теперь ученик волшебника. Идите практиковать свои новые навыки заклинания, и вы сможете поблагодарить меня позже. Не забудьте проверить страницы man на наличие всех этих команд, если вы застряли или не помните, что сделали некоторые флажки – волшебник никогда не отходит от своих книг.

Пожалуйста, поддержите мою привычку писать небольшим пожертвованием.

Следите за мной на Medium, чтобы получить дополнительные пособия, советы и советы. Эта статья также опубликована на моем новом сайте datastuff.tech. Проверь!

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

Ваш адрес email не будет опубликован.