sed / awk заменяет слово в определенной позиции предложения - PullRequest
1 голос
/ 26 апреля 2011

Я пытаюсь заменить слово в определенной позиции строки

Например, учитывая:

INSERT INTO address (city_id,city) VALUES (1,'Monrovia');
INSERT INTO address (city_id,city) VALUES (2,'Brunswick');
INSERT INTO address (city_id,city) VALUES (3,'Phenix City');

Я хочу заменить все разные города на "Детройт", в результате чего:

INSERT INTO address (city_id,city) VALUES (1,'Detroit');
INSERT INTO address (city_id,city) VALUES (2,'Detroit');
INSERT INTO address (city_id,city) VALUES (3,'Detroit');

Пожалуйста, как мне это сделать в sed, awk или vim?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 26 апреля 2011

А?Это просто:

$ echo "INSERT INTO address (city_id,city) VALUES (1,'Monrovia');
> INSERT INTO address (city_id,city) VALUES (2,'Brunswick'); 
> INSERT INTO address (city_id,city) VALUES (3,'Phenix City');" | 
> sed "s/'[^']*'/'Detroit'/g"
INSERT INTO address (city_id,city) VALUES (1,'Detroit'); 
INSERT INTO address (city_id,city) VALUES (2,'Detroit'); 
INSERT INTO address (city_id,city) VALUES (3,'Detroit');

Приветствия.Кит.

2 голосов
/ 26 апреля 2011

Самый простой: сохранить скрипт, добавить

UPDATE address SET city ='Detroit'

В vim:

:g/^INSERT INTO address/normal f;F'ci'Detroit

В седе:

sed "s/\(VALUES (.*,\)'.*\?'/\1'Detroit'/g"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...