SED Заменить строку, окруженную пробелами, новой строкой - PullRequest
0 голосов
/ 10 января 2020

Я новичок в написании сценариев ...

У меня есть файл, содержащий несколько страниц текста. И я хотел изменить слово в середине строки двумя другими, как в этом примере:

Исходная строка:

 BUREAU DES DOCKS ET TRANSPORTS         POSTE M.G.           CN 

Измененная строка:

 BUREAU DES DOCKS ET TRANSPORTS         POSTE M.G.           CN NICOLAS

Для этого я использовал в этом сценарии 'SED' с таким синтаксисом:

while read var1 var2
do
sed -i -e "/POSTE M.G./ s/ $var1 / $var1 $var2 /g" /exploit/scripts/file-MOD.txt
done < liste_MOD

Но это не работает. Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 10 января 2020

Ваше решение работает для меня. Можете ли вы показать, что у вас не работает?

bjb@rhino:~$ cat /tmp/mod
CN NICOLAS
bjb@rhino:~$ cat /tmp/sed.in
BUREAU DES DOCKS ET TRANSPORTS         POSTE M.G.           CN 

bjb@rhino:~$ while read var1 var2; do sed -i -e "/POSTE M.G./ s/ $var1 / 
$var1 $var2 /g" /tmp/sed.in; done < /tmp/mod
bjb@rhino:~$ cat /tmp/sed.in
BUREAU DES DOCKS ET TRANSPORTS         POSTE M.G.           CN NICOLAS 

bjb@rhino:~$

Я бы использовал это как адрес для подстановки, хотя:

/POSTE M\.G\./

В противном случае он будет соответствовать таким вещам, как POSTE MAGA , POSTE M9G2, et c.

Кроме того, чтобы сопоставлять целые слова без пробелов до и после, вы можете использовать \ b:

s/\b$var1\b/$var1 $var2/g
...