Как вставить текст перед первой строкой файла в Mac OS - PullRequest
0 голосов
/ 05 мая 2018

Пытаясь написать скрипт bash, который добавляет новую строку в каждый текстовый файл данной папки, я попытался sed. У меня есть рабочий код, который добавляет текст «blablabla» в строке 1

Но как:

  • добавить ли возврат каретки после этого текста "blablabla"?
  • сделать это для всех файлов (.txtaa/.txtab/.txtac) в данной папке?

Вот мой код

#!/bin/bash

sed '1i\
blablabla' miFile.txt > myNewFile.txt

1 Ответ

0 голосов
/ 05 мая 2018

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

Это должно работать на Mac OS или на любых совместимых с POSIX оболочках. В вашем скрипте, предполагая, что вы хотите сделать это для каждого файла в папке, просто выполните скрипт ниже.

Вы должны быть внутри папки вашего желания перед запуском скрипта. Например, cd myFolder/ и запустите его:

Поскольку у вас есть несколько расширений файлов, как вы заявляете, вы можете использовать шаблон глобуса как *.txt*

#!/usr/bin/env bash

shopt -s nullglob
for file in *.txt*; do 
    ex -sc '1i|blablabla' -cx "$file"
done

Или, если вы работаете из родительской папки, вы можете изменить конструкцию цикла на

for file in myFolder/*.txt*; do

Как упоминалось на связанной странице, 1 выбирает первую строку файла, i|<text> вставляет <text> по вашему выбору, за которым следует символ новой строки, а x закрывает файл.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...