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

Nxx ★★★★★
23.12.10 16:34:24 MSK
Открываешь OpenOffice и правишь что нужно. Ваш К.О.
anonymous
( 23.12.10 16:43:01 MSK )
1) cat foo | head -n=N > bar 2) echo >> bar 3) cat foo | tail -n=+N >> bar 4) mv bar foo 5) . 6) PROFIT!
Alan_Steel ★★
( 23.12.10 16:45:19 MSK )

$ perl -i -pe 'print "hello, world!\n" if $. == 5' file.txt
здесь 5 — номер строки.
arsi ★★★★★
( 23.12.10 16:47:07 MSK )

marvin_yorke ★★★
( 23.12.10 16:50:00 MSK )
Ответ на: комментарий от Alan_Steel 23.12.10 16:45:19 MSK
#!/bin/sh # args: file_name, line_number, some_string head -n $(($2-1)) $1 > /tmp/tmp_crap echo $3 >> /tmp/tmp_crap tail -n $2 $1 >> /tmp/tmp_crap mv /tmp/tmp_crap $1
anonymous
( 23.12.10 16:55:50 MSK )
Ответ на: комментарий от anonymous 23.12.10 16:55:50 MSK
> tail -n $2 $1
плюс перед $2 посеял, этак он выведет N строк с конца, а не с N по конец файла.
А в целом — красиво оформлено 😉
Alan_Steel ★★
( 23.12.10 16:59:29 MSK )

N=2; sed -e $N»s/^/Newline\n/» -i file
Bers666 ★★★★★
( 23.12.10 17:04:44 MSK )

Подскажите пожалуйста простую команду, добавляющую в текстовый файл определенную строку перед строкой с номером N.
sed '2iTEST STRING'
добавит TEST STRING перед 2й строкой.
drBatty ★★
( 23.12.10 17:06:00 MSK )
#!/bin/bash sed 4i\ 'Мама мылараму' test.txt >> out.txt mv -f out.txt password.txt rm -f out.txt
Pterodaktil
( 23.12.10 17:07:33 MSK )
Ответ на: комментарий от anonymous 23.12.10 16:43:01 MSK

>Открываешь OpenOffice и правишь что нужно. Ваш К.О.
это не КО, а ламо.
добавит строчку перед 666й строкой. Но sed кошернее.
drBatty ★★
( 23.12.10 17:08:33 MSK )
LINE=10 STR="New string before line $LINE" awk -v l=$LINE s="$STR" 'NR == l ; ' input.txt > output.txt cat output.txt > input.txt rm output.txt
sdio ★★★★★
( 23.12.10 17:08:44 MSK )
Ответ на: комментарий от drBatty 23.12.10 17:06:00 MSK
У тебя stdout — консоль. Надо перенаправить вывод в файл
Pterodaktil
( 23.12.10 17:09:53 MSK )
Ответ на: комментарий от Pterodaktil 23.12.10 17:07:33 MSK

sed -i 4i\ ‘Мама мылараму’ test.txt
stormy ★
( 23.12.10 17:10:28 MSK )
Ответ на: комментарий от drBatty 23.12.10 17:06:00 MSK
> sed ‘2iTEST STRING’
о самое простое, похоже =))
я по лумерски
N=3; STR=Hello ; sed -e «$N s/\(^.*$\)/$\n\1/» -i FILE_NAME
backbone ★★★★★
( 23.12.10 17:12:10 MSK )
Ответ на: комментарий от backbone 23.12.10 17:12:10 MSK
о самое простое, похоже =)) Только файлик не изменился
Pterodaktil
( 23.12.10 17:13:32 MSK )
Ответ на: комментарий от stormy 23.12.10 17:10:28 MSK

Nxx ★★★★★
( 23.12.10 17:19:27 MSK ) автор топика
Ответ на: комментарий от Pterodaktil 23.12.10 17:13:32 MSK

[code]sed -i[/code] или лучше без убийства старого [code]sed -i*.bak[/code]
В условии не написано где лежит текст, и куда его надо загнать.
drBatty ★★
( 23.12.10 17:23:07 MSK )
Ответ на: комментарий от drBatty 23.12.10 17:23:07 MSK
. добавляющую в текстовый файл..
stormy показал простое и элегантное решение
Pterodaktil
( 23.12.10 17:28:41 MSK )
Ответ на: комментарий от Pterodaktil 23.12.10 17:28:41 MSK

Чего в нём элегантного? 🙂
stormy ★
( 23.12.10 17:41:41 MSK )
Ответ на: комментарий от Pterodaktil 23.12.10 17:28:41 MSK

stormy показал простое и элегантное решение
/dev/stdout и /dev/stdin это тоже файлы. причём текстовые. я думал, что вы сами догадаетесь, как читать/писать файлы. и нет в решении stormy ничего элегантного — sed-скрипт вообще рваный, и непонятно, что и к чему относится. Кстати, наши решения с командой i ещё и не переносимы, надо писать так:
#!/bin/sed -f 2i\ Тестовая строчка
Вот ещё такой вариант. Для гуру:
sed -r 'N;N;N;N;N;N;s/(.*)(\n.*)/\1тестовая строка\n\2/'
Как добавить строку в конец файла в Linux
В этой статье о Linux описываются различные способы добавления строки в конец файла.
Прочитав этот учебник, вы сможете добавлять новые строки в конец файлов как с правами суперпользователя, так и без них в Linux, используя различные методы. Все методы включают примеры.
Содержимое действительно для всех дистрибутивов Linux.
Все инструкции содержат настоящие скриншоты, чтобы любому пользователю Linux было легко их понять и применить.
Добавление строки в конец файла, не требующего прав суперпользователя
В этом разделе объясняется, как добавить новую строку в конец файла, не требующего привилегий суперпользователя. После следующих инструкций в этом руководстве показано, как добавлять строки в файлы, требующие привилегий.
Для начала я создал файл с именем linux-consoleaddline. Чтобы увидеть его содержимое, я буду использовать команду less, как показано на рисунке ниже.
less linux-consoleaddline

Как вы можете видеть ниже, файл содержит 3 строки: «строка 1», «строка 2» и «строка 3».

Синтаксис для добавления строки в конец файла следующий: «Содержимое строки» — это текст, который вы хотите добавить, а «Файл» — это файл, который нужно добавить. который вы хотите добавить строку.
echo ‘Line Content’ >> File
Поэтому, если я хочу добавить «строку 4» в файл linux-consoleaddline, я выполняю команду, показанную на следующем снимке экрана:
echo ‘line 4’ >> linux-consoleaddline

Я хочу проверить файл, чтобы убедиться, что строка была правильно добавлена.
less linux-consoleaddline

Как вы можете видеть на изображении ниже, четвертая строка была успешно добавлена.

Существуют разные способы добавления линий. Вы также можете использовать команду printf. Синтаксис следующий:
printf «Line Content» >> File
Если я хочу добавить последнюю строку «строка 5 » в файл linux-consoleaddline, я запускаю команду, показанную ниже.
printf «line 5» >> linux-consoleaddline

Теперь, просто чтобы использовать другую команду, я подтвержу, была ли добавлена строка, выполнив команду ниже.
cat linux-consoleaddline

Строка успешно добавлена.
В следующем примере показано, как добавить несколько строк в конец файла.
Как сделать строку в конец файла, требующую привилегий
Как было сказано ранее, описанный выше метод не повлияет на файлы без прав суперпользователя. В этом разделе показано, как это сделать.
Как вы можете видеть ниже, при попытке использовать предыдущую команду я получаю сообщение об ошибке из-за отсутствия разрешений.
echo ‘line 5’ >> / root / linux-consoleaddline

Синтаксис для добавления строк в файлы с привилегиями root или sudo следующий:
sudo sh -c «echo ‘Line Content’ >> /path/file»
В этом примере я хочу добавить текст «строка 5» в файл /root/linux-consoleaddline. Для этого я использую описанный выше синтаксис, как вы можете видеть на рисунке ниже.
sudo sh -c «echo ‘line 5’ >> /root/linux-consoleaddline»

Опять же, я использую команду less, чтобы подтвердить, что строка была успешно добавлена.
sudo less / root / linux-consoleaddline

Как вы можете видеть ниже, строка была правильно добавлена.

Другой способ прочитать новую строку и записать ее в файл — объединить команду echo с tee через канал. Синтаксис следующий:
echo ‘File Content’ | sudo tee -a linux-consoleaddline
Поэтому, если я хочу добавить строку «line 6» с привилегиями, я набираю команду, показанную на рисунке ниже.
echo ‘line 6’ | sudo tee -a / root / linux-consoleaddline

Чтобы проверить, правильно ли добавлена строка, я снова запущу команду less, за которой следует путь.
sudo less / root / linux-consoleaddline

И, как видите, строка была добавлена.

Вот как вы можете легко добавлять строки в конец файлов в Linux.
Заключение:
Добавлять строки в конец файлов легко, а гибкость Linux позволяет использовать более одного метода, даже больше, чем описанный в этом документе. Как было сказано ранее, приведенные выше инструкции полезны для всех дистрибутивов Linux. Рекомендуется писать все команды самостоятельно, а не копировать и вставлять их.
Все права защищены. © Linux-Console.net • 2019-2024
Записать строку в конец файла linux
Как добавить строку в конец файла linux через командную строку ?
короткая ссылка на этот вопрос: close
спросил 9 лет назад
1 ответ
В консоли Linux записать строку в файл.
Для добавления строк в конец файла воспользоваться командай echo и знаком >> для перенаправления вывода в файл:
echo "this text will be added at the end off file info.txt" >> ~/Documents/info.txt
Другой пример bash добавления строки «nameserver 8.8.8.8» в файл /etc/resolf.conf:
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
Если же у вас не хватает прав для записи в файл:
-bash: /etc/resolv.conf: Permission denied
То можно выполнить запись строки в файл под sudo (root) с помощью команды sudo sh -c :
sudo sh -c "echo 'nameserver 8.8.8.8' >> /etc/resolv.conf"
Если вы хотите добавлять строку в файл не на bash, а на php, то как это сделать можно прочитать здесь.
Редактирование файла: добавление несуществующей строки в файл
Добавление строки или строки в файл иногда необходимо для изменения вывода без удаления существующих данных. Это ценный способ изменить файл, добавив несколько строк между существующими строками файла.
«Добавить» означает добавление данных в файл без стирания доступных в данный момент данных. Чтобы добавить строку в файл, вы можете использовать различные команды, такие как printf, echo, tee, cat и т. д.
Хотя добавить строку несложно, многим новичкам всегда требуются разъяснения. Итак, это руководство будет включать простые способы добавления несуществующей строки в файл.
Редактирование файла: добавление несуществующей строки в файл
Оператор «>>» может перенаправить вывод файла. Если упомянутый файл не существует, он автоматически создает его, а затем добавляет строку. С помощью этого оператора вы можете добавить новую строку в файл, используя несколько команд.
Вы будете печатать строки с помощью команд, а оператор «>>» напечатает эту строку в файле. Например, у нас есть файл Linux.txt, который содержит следующую информацию:
cat Linux.txt What does append mean in Linux?
В этот файл мы добавим новую строку с помощью нескольких разных команд.
Команда printf
Команда printf позволяет записывать, форматировать и преобразовывать параметры аргументов в стандартный вывод. Сначала мы увидим, как добавить новую строку в файл с помощью оператора «>>» с командой printf —
printf " " >>
Давайте теперь добавим новую строку в файл Linux.txt, используя следующую команду:
printf "You can append a line through various commands in the terminal. " >> Linux.txt cat Linux.txt What does append mean in Linux? You can append a line through various commands in the terminal.
Вы можете видеть, что выполнение приведенной выше команды добавляет в файл новую строку.
Эхо-команда
Используя встроенную команду «echo», вы можете отобразить строку/строку текста в Linux, передав ее в качестве аргумента.
echo "" >>
Давайте попробуем еще раз добавить строку в Linux.txt –
echo "You can append a line through various commands in the terminal. " >> Linux.txt cat Linux.txt What does append mean in Linux? You can append a line through various commands in the terminal.
Тройник команды
Команда «tee» в Linux считывает введенные данные и печатает их в один или несколько файлов. С помощью этой команды вы можете распечатать входные данные одного файла в другом файле. Более того, вы также можете использовать команду tee для прямой печати новой строки в файле.
cat | tee -a
Например, мы напечатаем содержимое файла «Info.txt» в файле «Linux.txt» с помощью этой команды. Здесь мы сначала принимаем строку, присутствующую в файле Info.txt, в качестве входных данных с помощью команды cat. Кроме того, мы передадим команду tee для печати этих входных данных в файле Linux.txt.
cat Info.txt | tee -a Linux.txt You can append a line through various commands in the terminal. cat Linux.txt What does append mean in Linux? You can append a line through various commands in the terminal.
Кроме того, вы можете напрямую добавить новую строку в файл с помощью команды echo. Таким же образом можно распечатать строку с помощью команды echo, а затем передать ее по каналу с помощью команды tee.
echo "" | tee -a
В приведенной выше команде опция -a добавляет строку данного файла. Давайте реализуем эту комбинацию команд в файле —
echo "You can append a line through various commands in the terminal." | tee -a Linux.txt You can append a line through various commands in the terminal. cat Linux.txt What does append mean in Linux? You can append a line through various commands in the terminal.
Кошачья команда
Мощная и универсальная команда cat в основном используется для отображения содержимого файла. Наряду с этим вы можете распечатать содержимое из одного файла в другой —
Здесь мы снова добавим содержимое файла «Linux1.txt» в файл «Linux.txt» с помощью команды cat.
cat Info.txt >> Linux.txt cat Linux.txt What does append mean in Linux? Append means simply add the data to the file erasing existing data.
Заключение
Речь шла о простых способах добавления несуществующей строки в файл. Мы объяснили четыре метода добавления строки без изменения существующего вывода. Убедитесь, что вы используете все команды правильно, поскольку неподходящие команды иногда могут привести к ошибкам. Кроме того, вы можете узнать больше о Linux, посетив наш официальный сайт.
Все права защищены. © Linux-Console.net • 2019-2024