У меня есть внешняя программа, которая производит выходной файл (большой, 20K строк возможно).
Мне нужно вставить новую строку между существующей строкой 1 и строкой 2. Я смотрел на awk и sed - я использую по одному вкладышу в каждом довольно регулярно - но я не смог найти правильные переключатели для сделай это.
text-processing
sed
awk
Тим Бригам
источник
источник
awk 'NR==2 {print "new line"} 1'
Для вашего конкретного случая это должно быть проще:
Пояснение: в строке 1 сделайте следующее
Затем строка (сейчас пустая) снова печатается как часть цикла.
Если вы хотите добавить новую строку вместо символа новой строки (то, что я понял изначально), просто используйте
sed
командуa\
(append):или даже
Он добавляет "
appended line
" после строки 1.источник
sed -i '1 a\\' file
просто для новой строки.'1 aapended line'
пример.Я думаю, что
sed
подход был бы:sed '2 i whatever_line_of_text_you_wanted_to_INSERT' filename.txt
Это позволит получить текст во второй строке файла, а затем фактическая вторая строка в файле станет третьей.
Обратите внимание, что при использовании режима добавления , если это необходимо, необходимо использовать первую строку, так как добавление произойдет после указанного номера строки.
sed '1 a whatever_line_of_text_you_wanted_to_INSERT' filename.txt
источник
Объяснение.
источник
Это может работать для вас:
Если вы хотите вставить
something
после новой строки:Или если вы сидите ручки
\n
:Конечно
a
еще прощеисточник
\n
строку в первую строку!Я обычно использую
ed
для этого:Похоже на
sed
решение, но без беспорядка сбежавших новых строк.источник
echo
«S, особенно приbash
:ed - filename <<< $'1a\nLine to insert\n.\nw'
.dash
, во многих системах/bin/sh
.echo
«s». Щадящая всеecho
«s действительноbash
только функция, но уменьшаяecho
количество от 4 до 1 работ вdash
иksh
тоже:echo '1a\nLine to insert\n.\nw' | ed - filename
.printf %s\\n
, который ставит новую строку после каждого аргумента, который вы ей даете, и не портит специальные символы, вставленные в строку, которую вы хотите вставить. Кроме того, зачем использовать,ed
когдаex
доступно?Python Solution
источник
Использование
sed
и (специфичных для Bash) управляющих кодов ANSI:источник
я бы использовал Python для этого
источник
Мне просто нравится использовать явный счетчик:
источник
Самый простой метод использует
printf
иex
:1a
означает «добавить после первой строки»;.
заканчивает эту директиву;x
значит сохранить и выйти.источник
Ни в одном из приведенных выше ответов не упоминается, как сохранить изменения в исходном файле, что, как мне кажется, запрашивало ОП.
Это, безусловно, то, что мне нужно, когда я захожу на страницу.
Итак, если ваш файл называется
output.txt
Мой конкретный пример использования - автоматическое добавление декларации таблицы стилей xsl в xml-файл junit.
источник