Добавить данные в определенную строку файла

Поведение udhcpc -n -bбыло исправлено, чтобы вести себя как udhcpc -bв исправлении для ошибки busybox #11691 .

Таким образом, начиная с busybox -1.31 (, который еще не выпущен на данный момент ), udhcpc_opts -bдолжен работать как положено.

0
09.05.2019, 17:55
3 ответа

Чтобы сопоставить строки, начинающиеся с DL1 :, и добавить ,ghj@kk.comв конец($)из них:

$ sed '/^DL1 :/ s/$/,ghj@kk.com/' file
DL1 : abc@kk.com,cde@kk.com,xyz@kk.com,ghj@kk.com
DL2 : hjk@kk.com,nbv@kk.com,tuy@kk.com

В зависимости от ваших требований и версии sedвы можете добавить -i, чтобы выполнить преобразование в месте -.

5
28.01.2020, 02:14

Простое выполнение вашего требования с помощьюawk:

awk '$1 == "DL1" {$0 = $0 ",ghj@kk.com"} 1' file

Используя GNU awk, вы можете использовать опцию -iдля внесения правок на месте, в противном случае вам нужно будет создать временный файл с выводом.


Если вы хотите добавить эту функциональность в сценарий оболочки, вы можете передать поиск и ввод с помощью переменных awk. Что-то вроде:

#!/bin/sh

search=$1
addition=$2

awk -v s="$search" -v a="$addition" '$1 == s {$0 = $0 "," a} 1' file
1
28.01.2020, 02:14

Это довольно простая задача для стандартного редактора UNIX, ред.:

printf '%s\n' '/^DL1 :/ s/$/,ghj@kk.com/' w q | ed -s input

Приведенное выше выводит три команды, разделенные новой строкой -, вed:

  1. в строке, которая начинается с текста DL1 :, найдите и замените конец -маркера строки -($)на,ghj@kk.com
  2. wзаписать файл на диск
  3. qу ред

Это приводит к добавлению ,ghj@kk.comв конец строки DL1 :.

0
28.01.2020, 02:14

Теги

Похожие вопросы