Как добавить строку в файл?
Подскажите пожалуйста простую команду, добавляющую в текстовый файл определенную строку перед строкой с номером N.
Открываешь OpenOffice и правишь что нужно. Ваш К.О.

здесь 5 — номер строки.

> tail -n $2 $1
плюс перед $2 посеял, этак он выведет N строк с конца, а не с N по конец файла.
А в целом — красиво оформлено 😉

N=2; sed -e $N"s/^/Newline\n/" -i file

Подскажите пожалуйста простую команду, добавляющую в текстовый файл определенную строку перед строкой с номером N.
добавит TEST STRING перед 2й строкой.

>Открываешь OpenOffice и правишь что нужно. Ваш К.О.
это не КО, а ламо.
добавит строчку перед 666й строкой. Но sed кошернее.
У тебя stdout — консоль. Надо перенаправить вывод в файл

sed -i 4i\ ‘Мама мылараму’ test.txt
> sed ‘2iTEST STRING’
о самое простое, похоже =))
я по лумерски
N=3; STR=Hello ; sed -e «$N s/\(^.*$\)/$
о самое простое, похоже =)) Только файлик не изменился


[code]sed -i[/code] или лучше без убийства старого [code]sed -i*.bak[/code]
В условии не написано где лежит текст, и куда его надо загнать.
. добавляющую в текстовый файл..
stormy показал простое и элегантное решение

Чего в нём элегантного? 🙂

stormy показал простое и элегантное решение
/dev/stdout и /dev/stdin это тоже файлы. причём текстовые. я думал, что вы сами догадаетесь, как читать/писать файлы. и нет в решении stormy ничего элегантного — sed-скрипт вообще рваный, и непонятно, что и к чему относится. Кстати, наши решения с командой i ещё и не переносимы, надо писать так:
Добавить текст в файл в Java
В этом посте мы обсудим, как добавить текст в конец файла в Java.
Текст должен быть написан в конце файла, а не в начале. Если файл не существует, создайте новый с тем же именем и запишите данные.
Есть несколько способов добавить текст в конец файла в простой Java и с использованием сторонних библиотек, таких как Guava, Apache Commons IO и т. д. Все они подробно обсуждаются ниже:
1. Использование Files.write() метод
С введением Класс файлов в Java 7 включены несколько статических методов, которые работают с файлами, каталогами или другими типами файлов.
Bash: добавить текст в файл
В Bash есть несколько способов добавить текст в файл. Эта статья объясняет некоторые из них.
Чтобы добавить текст в файл, у вас должны быть права на запись в него. В противном случае вы получите сообщение об ошибке в разрешении отказано.
Добавить в файл с помощью оператора перенаправления ( >> )
Перенаправление позволяет захватывать выходные данные команды и отправлять их в качестве входных данных в другую команду или файл. Оператор перенаправления >> добавляет вывод в указанный файл.
Существует ряд команд, которые вы можете использовать для вывода текста на стандартный вывод и перенаправления его в файл, причем наиболее часто используются команды echo и printf .
Чтобы добавить текст в файл, укажите имя файла после оператора перенаправления:
При использовании с параметром -e команда echo интерпретирует экранированные символы обратной косой черты, такие как новая строка n :
Чтобы получить более сложный вывод, используйте команду printf которая позволяет вам указать форматирование вывода:
Другой способ добавить текст в файл — использовать документ Here (Heredoc). Это тип перенаправления, который позволяет передавать команде несколько строк ввода.
Например, вы можете передать содержимое команде cat и добавить его в файл:
Вы можете добавить вывод любой команды в файл. Вот пример с командой date :
При добавлении к файлу с использованием перенаправления будьте осторожны, чтобы не использовать оператор > для перезаписи важного существующего файла.
Добавить в файл с помощью команды tee
tee — это утилита командной строки в Linux, которая считывает из стандартного ввода и записывает как в стандартный вывод, так и в один или несколько файлов одновременно.
По умолчанию команда tee перезаписывает указанный файл. Чтобы добавить вывод в файл, используйте tee с параметром -a ( —append ):
Если вы не хотите, чтобы tee выводил данные на стандартный вывод, перенаправьте его на /dev/null :
Преимущество использования команды tee перед оператором >> заключается в том, что tee позволяет добавлять текст сразу в несколько файлов и записывать в файлы, принадлежащие другим пользователям, вместе с sudo .
Чтобы добавить текст в файл, в который у вас нет прав на запись, добавьте sudo перед tee как показано ниже:
tee получает вывод команды echo , повышает разрешения sudo и записывает в файл.
Чтобы добавить текст в несколько файлов, укажите файлы в качестве аргументов команды tee :
Выводы
В Linux для добавления текста в файл используйте оператор перенаправления >> или команду tee .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Как добавить строку в файл
Для работы непосредственно с текстовыми файлами в пространстве System.IO определены специальные классы: StreamReader и StreamWriter .
Запись в файл и StreamWriter
Для записи в текстовый файл используется класс StreamWriter . Некоторые из его конструкторов, которые могут применяться для создания объекта StreamWriter:
StreamWriter(string path) : через параметр path передается путь к файлу, который будет связан с потоком
StreamWriter(string path, bool append) : параметр append указывает, надо ли добавлять в конец файла данные или же перезаписывать файл. Если равно true, то новые данные добавляются в конец файла. Если равно false, то файл перезаписываетсяя заново
StreamWriter(string path, bool append, System.Text.Encoding encoding) : параметр encoding указывает на кодировку, которая будет применяться при записи
Свою функциональность StreamWriter реализует через следующие методы:
int Close() : закрывает записываемый файл и освобождает все ресурсы
void Flush() : записывает в файл оставшиеся в буфере данные и очищает буфер.
Task FlushAsync() : асинхронная версия метода Flush
void Write(string value) : записывает в файл данные простейших типов, как int, double, char, string и т.д. Соответственно имеет ряд перегруженных версий для записи данных элементарных типов, например, Write(char value) , Write(int value) , Write(double value) и т.д.
Task WriteAsync(string value) : асинхронная версия метода Write. Обратите внимание, что асинхронные версии есть не для всех перегрузок метода Write.
void WriteLine(string value) : также записывает данные, только после записи добавляет в файл символ окончания строки
Task WriteLineAsync(string value) : асинхронная версия метода WriteLine
Рассмотрим запись в файл на примере:
В данном случае два раза создаем объект StreamWriter. В первом случае если файл существует, то он будет перезаписан. Если не существует, он будет создан. И в нее будет записан текст из переменной text. Во втором случае файл открывается для дозаписи, и будут записаны атомарные данные — строка и число.
По завершении в папке программы мы сможем найти файл note.txt, который будет иметь следующие строки:
В пример выше будет использоваться кодировка по умолчанию. но также можно задать ее явным образом:
Чтение из файла и StreamReader
Класс StreamReader позволяет нам легко считывать весь текст или отдельные строки из текстового файла.
Некоторые из конструкторов класса StreamReader:
StreamReader(string path) : через параметр path передается путь к считываемому файлу
StreamReader(string path, System.Text.Encoding encoding) : параметр encoding задает кодировку для чтения файла
Среди методов StreamReader можно выделить следующие:
void Close() : закрывает считываемый файл и освобождает все ресурсы
int Peek() : возвращает следующий доступный символ, если символов больше нет, то возвращает -1
int Read() : считывает и возвращает следующий символ в численном представлении. Имеет перегруженную версию: Read(char[] array, int index, int count) , где array — массив, куда считываются символы, index — индекс в массиве array, начиная с которого записываются считываемые символы, и count — максимальное количество считываемых символов