Заменить номер с последовательным идентификатором в SED - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть около 12k файлов с такой строкой:

script_oid("1.3.6.1.4.1.25623.7.0.391810");

Мне нужно изменить последние 6 цифр (391810) на последовательный идентификатор, начиная с 300000. До сих пор я делал это:

`find . -type f -name '*.nasl' -exec sed -i -e 's/script_oid("1.3.6.1.4.1.25623.7.0.\(.*\)/script_oid("1.3.6.1.4.1.25623.1.0.\1/g' {} \;`

Я пробовал некоторые идеи с AWK, но пока не нашел решения. Итак, мне нужна помощь здесь. Я запускаю это на Ubuntu 16.04.

Заранее спасибо за помощь.

С уважением,

1 Ответ

2 голосов
/ 12 апреля 2019

Пожалуйста, попробуйте:

id=300000
while IFS= read -r -d "" f; do
    sed  -e "s/script_oid(\"1.3.6.1.4.1.25623.7.0.\(.*\)/script_oid(\"1.3.6.1.4.1.25623.1.0.$id/g" "$f"
    id=$((++id))
done < <(find . -type f -name '*.nasl' -print0)

Обратите внимание, что id назначается в порядке появления как find.

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