Как добавить текст в начало каждой строки с помощью sed

Вопрос или проблема

<AppendNhere> A  H  W  C  
<AppendNhere> A  H  W  C
<AppendNhere> A  H  W  C

Sed '/^/ i N' filename

Я пытался добавить N с помощью этого, но N добавляется в начало новых строк, а не в начало существующих строк.

Сначала вам нужно понять “цитирование” (см. man bash) и регулярные выражения (man 7 regex) и использовать команду sed‘s (man sed “substitute”.

sed -e 's/^/N/' filename

Вы можете сделать это с помощью

sed -e "s/^\(.*\)/N \1/" filename

Это вставляет строку N в начало строки (^).

Ответ или решение

Чтобы добавить текст в начало каждой строки с помощью утилиты sed, нужно правильно использовать символы и синтаксис. Убедитесь, что вы понимаете, как работают регулярные выражения и как sed обрабатывает текст. Рассмотрим поэтапно, как осуществить данную задачу.

Пример задачи

Предположим, у вас есть файл с содержимым:

A  H  W  C  
A  H  W  C  
A  H  W  C  

Ваше намерение заключается в том, чтобы добавить строку <AppendNhere> в начало каждой существующей строки, в результате чего должно получиться:

<AppendNhere> A  H  W  C  
<AppendNhere> A  H  W  C  
<AppendNhere> A  H  W  C  

Использование команды sed

Команда sed является мощным инструментом для обработки текстовых файлов, и в данном случае вам подойдут следующие команды.

Метод 1: Использование простого замещения

Вы можете использовать следующую команду, чтобы вставить текст в начало каждой строки:

sed -e 's/^/<AppendNhere> /' имя_файла
  • s/^/<AppendNhere> / — основная команда, где:
    • s обозначает, что мы собираемся производить замену.
    • ^ указывает на начало строки.
    • <AppendNhere> — текст, который будет добавлен.

Метод 2: Использование команды вставки

Если вы хотите использовать команду вставки, которая добавляет строки непосредственно перед каждой существующей строкой, вы можете воспользоваться таким синтаксисом:

sed -e 'i\<AppendNhere> N' имя_файла

Однако обращаю ваше внимание, что данный метод может не соответствовать вашим требованиям, так как i вставляет строку перед существующей, а не в начале строк.

Применение на практике

  1. Создайте файл. Например, создайте текстовый файл example.txt с вашими данными.
  2. Запустите команду sed. Вызовите команду из терминала:
    sed -e 's/^/<AppendNhere> /' example.txt
  3. Проверка результата. Вы можете перенаправить вывод в новый файл, если хотите сохранить изменения:
    sed -e 's/^/<AppendNhere> /' example.txt > new_example.txt

Заключение

Таким образом, добавление текста в начало каждой строки с помощью sed удобно и легко выполняется с помощью замены. Не забудьте протестировать команду на тестовых данных, чтобы убедиться, что она работает в зависимости от ваших требований. Важно понимать, что ошибки в синтаксисе могут привести к неожиданным результатам, поэтому внимательно следите за вводом.

Оцените материал
Добавить комментарий

Капча загружается...