Как добавить строку в файл?
Подскажите пожалуйста простую команду, добавляющую в текстовый файл определенную строку перед строкой с номером 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/'
Редактирование файла: добавление несуществующей строки в файл
Добавление строки или строки в файл иногда необходимо для изменения вывода без удаления существующих данных. Это ценный способ изменить файл, добавив несколько строк между существующими строками файла.
«Добавить» означает добавление данных в файл без стирания доступных в данный момент данных. Чтобы добавить строку в файл, вы можете использовать различные команды, такие как 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-2023
Как добавить текст в конец файла в Linux
При работе с файлами конфигурации в Linux иногда вам нужно добавить текст, например параметры конфигурации, в существующий файл. Добавить просто означает добавить текст в конец или конец файла.
В этой короткой статье вы узнаете о различных способах добавления текста в конец файла в Linux.
Добавить текст с помощью оператора >>
Оператор >> перенаправляет вывод в файл, если файл не существует, он создается, но если он существует, вывод будет добавлен в конец файла.
Например, вы можете использовать команду echo для добавления текста в конец файла, как показано ниже.
# echo "/mnt/pg_master/wal_archives 10.20.20.5(rw,sync,no_root_squash)" >> /etc/exports
В качестве альтернативы вы можете использовать команду printf (не забудьте использовать символ \n для добавления следующей строки).
# printf "/mnt/pg_master/wal_archives 10.20.20.5(rw,sync,no_root_squash)\n" >> /etc/exports
Вы также можете использовать команду cat, чтобы объединить текст из одного или нескольких файлов и добавить его в другой файл.
В следующем примере дополнительные общие ресурсы файловой системы, добавляемые в файл конфигурации /etc/exports, добавляются в текстовый файл с именем shares.txt.
# cat /etc/exports # cat shares.txt # cat shares.txt >> /etc/exports # cat /etc/exports

Кроме того, вы также можете использовать следующий здесь документ, чтобы добавить текст конфигурации в конец файла, как показано.
# cat /etc/exports # cat >>/etc/exports /backups 10.20.20.0/24(rw,sync) > /mnt/nfs_all 10.20.20.5(rw,sync) > EOF # cat /etc/exports

Внимание: не путайте оператор перенаправления > с >> ; использование > с существующим файлом удалит содержимое этого файла, а затем перезапишет его. Это может привести к потере данных.
Добавить текст с помощью команды tee
Команда tee копирует текст из стандартного ввода и вставляет/записывает его в стандартный вывод и файлы. Вы можете использовать его флаг -a для добавления текста в конец файла, как показано ниже.
# echo "/mnt/pg_master/wal_archives 10.20.20.5(rw,sync,no_root_squash)" | tee -a /etc/exports OR # cat shares.txt | tee -a /etc/exports

Вы также можете использовать здесь документ с командой tee.
# cat /backups 10.20.20.0/24(rw,sync) >/mnt/nfs_all 10.20.20.5(rw,sync) EOF

Вы также можете прочитать эти связанные статьи.
- Как запускать команды из стандартного ввода с помощью Tee и Xargs в Linux
- Изучите основы работы перенаправления ввода/вывода в Linux
- Как сохранить вывод команды в файл в Linux
- Как подсчитать количество вхождений слова в текстовом файле
Вот и все! Вы узнали, как добавить текст в конец файла в Linux. Если у вас есть вопросы или мысли, которыми вы хотите поделиться, свяжитесь с нами через форму обратной связи ниже.
Все права защищены. © Linux-Console.net • 2019-2023
Записать строку в конец файла 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, то как это сделать можно прочитать здесь.