Как вставить текст в начале файла? - PullRequest
180 голосов
/ 02 марта 2012

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

Содержимое файла

some text at the beginning

Результат

<added text> some text at the beginning

Это похоже, ноЯ не хочу создавать с ним новую строку ...

Я хотел бы сделать это с sed, если это возможно.

Ответы [ 14 ]

1 голос
/ 15 февраля 2019

Использовать подоболочку:

echo "$(echo -n 'hello'; cat filename)" > filename
1 голос
/ 17 декабря 2018

мои два цента:

sed  -i '1i /path/of/file.sh' filename

Это будет работать, даже если строка содержит косую черту "/"

1 голос
/ 21 мая 2018

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

ed Test <<EOF
a

.
0i
<added text>
.
1,+1 j
$ g/^$/d
wq
EOF

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

Ограничения: Этот скрипт не работает, если <added text> точно равен одному периоду.

1 голос
/ 05 июня 2015
echo -n "text to insert " ;tac filename.txt| tac > newfilename.txt

Первый tac передает файл в обратном направлении (последняя строка в первую очередь), поэтому «текст для вставки» появляется последним. 2-й tac оборачивает его еще раз, поэтому вставленная строка находится в начале, а исходный файл - в исходном порядке.

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