как заменить строки в файле на основе значений из другого файла?(пример внутри) - PullRequest
1 голос
/ 12 марта 2011

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

Пример, 2 файла - ввод, вывод

ввод:

12345 1

вывод:

(1,'a lot of text', 'some other info',0,null, 12345),
(2,'a lot of text', 'some other info',0,null, 12345),
(3,'a lot of text', 'some other info',0,null, 12345),
(4,'a lot of text', 'some other info',0,null, 12345),
(5,'a lot of text', 'some other info',0,null, 12345);

Необходимо выполнить:

прочитать значения из файла 'input' и заменить все '12345' на '1' в файле 'output'.Заранее спасибо за помощь

Ответы [ 4 ]

4 голосов
/ 12 марта 2011

Как насчет:

sed `sed 's|\(.*\) \(.*\)|s/\1/\2/|' input` output
2 голосов
/ 12 марта 2011

Нет необходимости повторять вызов AWK sed. Просто попросите AWK прочитать первый файл в массив:

awk -F "[ )]" 'NR == FNR {a[$1] = $2; next} {sub($(NF-1), a[$(NF-1)]); print}' key-value-file main-file
0 голосов
/ 12 марта 2011

хорошо, я наткнулся на это решение:

cat input | awk '{ cmd = "sed s/," $1 ",/," $2 ",/g" " output > output.new"; print system(cmd) }'
0 голосов
/ 12 марта 2011
cat input | while read src rep
do
  sed -i "s, $src), $rep),g" output
done

Не забудьте сделать резервную копию «output».

EDIT: Также обратите внимание, что если «input» содержит символы, которые special для sed, это не удастся.Для простых букв / цифр это будет хорошо работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...