zaLinux.ru

Как добавить строку в начало или в конец каждой строчки


Рассмотрим варианты, когда в командной строке Linux для всех строчек в файле нужно добавить строку в начало, в конец или сразу в начало и конец.

К примеру, нужно добавить в файл .htaccess тысячи IP адресов для блокировки, которые содержатся в текстовом файле, для этого перед ними нужно добавить строку «Require not ip » или «Deny from » (в зависимости от версии сервера, подробнее смотрите «Контроль доступа к сайту (блокировка по IP, User-Agent)»).

Предположим, наш список IP адресов для блокировки содержится в файле hola.ip:

Чтобы добавить перед каждой строкой «Require not ip » достаточно выполнить команду:

sed 's/^/Require not ip /' hola.ip

Это только один из многочисленных примеров, когда на практике может понадобиться добавлять строки до или после текста.

В последующих командах:

  • ПРЕФИКС — означает текст, вставляемый перед каждой строчкой
  • СУФФИКС — означает текст, вставляемый в конце каждой строчки
    ФАЙЛ.txt — файл, из которого будут считываться строки для изменения

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

Обратите внимание, что начальный файл меняться не будет, а новые значения строк будут выведены в стандартный вывод. Если к любой из последующих команд с sed и perl добавить опцию -i, то изменения будут сделаны в исходном файле вместо вывода результатов в стандартный вывод. Например:


sed -i 's/^/ПРЕФИКС/' hola.ip.bac
awk -i '{ print "ПРЕФИКС" $0 }' hola.ip.bac

Как добавить строку в начало каждой строчки

С помощью sed (любая из команд):

sed 's/^/ПРЕФИКС/' ФАЙЛ.txt
sed -e 's/^\(.*\)$/ПРЕФИКС\1/' ФАЙЛ.txt
sed 's/.*/ПРЕФИКС&/' ФАЙЛ.txt

С помощью awk:

awk '{ print "ПРЕФИКС" $0 }' ФАЙЛ.txt

С помощью perl (любая из команд):

perl -lne 'print "ПРЕФИКС$_"' ФАЙЛ.txt
perl -pe 's/^/ПРЕФИКС/' ФАЙЛ.txt
perl -lpe '$_="ПРЕФИКС$_"' ФАЙЛ.txt

Как добавить строку в конец каждой строчки

С помощью sed (любая из команд):

sed 's/$/СУФФИКС/' ФАЙЛ.txt
sed -e 's/^\(.*\)$/\1СУФФИКС/' ФАЙЛ.txt
sed 's/.*/&СУФФИКС/' ФАЙЛ.txt

С помощью awk:

awk '{ print $0 "СУФФИКС" }' ФАЙЛ.txt

С помощью perl (любая из команд):

perl -lne 'print "$_СУФФИКС"' ФАЙЛ.txt
perl -pe 's/$/СУФФИКС/' ФАЙЛ.txt
perl -lpe '$_="$_СУФФИКС"' ФАЙЛ.txt

Как добавить строку в начало и в конец каждой строчки

С помощью sed (любая из команд):

sed 's/^/ПРЕФИКС/; s/$/СУФФИКС/' ФАЙЛ.txt
sed -e 's/^\(.*\)$/ПРЕФИКС\1СУФФИКС/' ФАЙЛ.txt
sed 's/.*/ПРЕФИКС&СУФФИКС/' ФАЙЛ.txt

С помощью awk:

awk '{ print "ПРЕФИКС" $0 "СУФФИКС" }' ФАЙЛ.txt

С помощью perl (любая из команд):


perl -lne 'print "ПРЕФИКС$_СУФФИКС"' ФАЙЛ.txt
perl -pe 's/^/ПРЕФИКС/; s/$/СУФФИКС/' ФАЙЛ.txt
perl -lpe '$_="ПРЕФИКС$_СУФФИКС"' ФАЙЛ.txt

Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *