До сих пор я был в состоянии найти, как добавить строку в начале файла, но это не совсем то, что я хочу. Я покажу это на примере
Содержание файла
some text at the beginning
результат
<added text> some text at the beginning
Это похоже, но я не хочу создавать новую линию с этим ...
Я хотел бы сделать это с, sed
если это возможно.
sed
.Ответы:
sed
может работать по адресу:Что это за волшебство
1s
вы видите на каждом ответе здесь? Линия адресации! ,Хотите добавить
<added text>
в первые 10 строк?Или вы можете использовать
Command Grouping
:источник
Если вы хотите добавить строку в начале файла, вам нужно добавить
\n
в конце строки лучшее решение, описанное выше.Лучшее решение - добавить строку, но со строкой она не добавит строку в конец файла.
источник
Если файл содержит только одну строку, вы можете использовать:
Если это более одной строки. один из:
Я включил последний, чтобы вы знали, как делать диапазоны линий. Оба из них «заменяют» маркер начальной строки на соответствующих строках текстом, который вы хотите вставить. Вы также можете (при условии, что вы
sed
достаточно современны) использовать:сделать редактирование на месте.
источник
Ты можешь использовать
cat -
источник
echo
добавление новой строки?> file
к команде, он просто спамил мой терминал с"some text at the beginning"
printf '%s' "some text" | cat - filename > tmpfile && mv tmpfile filename
Чтобы вставить только новую строку:
источник
Используйте subshell:
источник
Обратите внимание, что на OS X
sed -i <pattern> file
, не удается. Однако, если вы предоставите расширение для резервной копииsed -i old <pattern> file
, оноfile
будет изменено на месте, покаfile.old
создается. Затем вы можете удалитьfile.old
в своем скрипте.источник
ПРОБЛЕМА: пометьте файл в верхней части файла базовым именем родительского каталога.
То есть для
пометить верх
file1
сProgramming
.РЕШЕНИЕ 1 - непустые файлы:
1s
помещает текст в строку 1 файла.РЕШЕНИЕ 2 - пустые или непустые файлы:
Команда
sed
выше, терпит неудачу на пустых файлах. Вот решение, основанное на /superuser/246837/how-do-i-add-text-to-the-beginning-of-a-file-in-bash/246841#246841Обратите внимание, что
-
требуется команда in cat (читает стандартный ввод: см.man cat
Дополнительную информацию). Здесь, я полагаю, необходимо взять выходные данные оператора printf (в STDIN), а затем преобразовать его и файл в temp ... См. Также пояснение внизу http://www.linfo.org/cat .html .Я также добавил
-f
вmv
команду, чтобы не запрашивать подтверждения при перезаписи файлов.Чтобы выполнить поиск по каталогу:
Также обратите внимание, что это сломает пути с пробелами; для них есть решения, в другом месте (например, глобализация файлов или
find . -type f ...
решения типа).ADDENDUM: Re: мой последний комментарий, этот скрипт позволит вам просматривать каталоги с пробелами в путях:
источник
Привет с возвратом каретки:
источник
Чтобы добавить строку в начало файла:
источник
Есть очень простой способ:
источник
Просто для удовольствия, вот решение с использованием
ed
которого не имеет проблемы не работает с пустым файлом. Вы можете поместить его в скрипт оболочки, как и любой другой ответ на этот вопрос.Приведенный выше скрипт добавляет текст для вставки в первую строку, а затем соединяет первую и вторую строки. Чтобы избежать выхода при ошибке с недопустимым соединением, сначала создается пустая строка в конце файла, а затем удаляется, если он все еще существует.
Ограничения: этот скрипт не работает, если
<added text>
он точно равен одному периоду.источник
мои два цента:
Это будет работать, даже если строка содержит косую черту
"/"
источник
Первая
tac
направляет файл назад (последняя строка первая), поэтому «текст для вставки» появляется последним. 2-йtac
переносит его еще раз, поэтому вставленная строка находится в начале, а исходный файл - в исходном порядке.источник
Еще одно решение с псевдонимами. Добавьте в ваш файл init rc / env:
Использование:
источник