在SED中用序列ID替换号码

问题描述 投票:-1回答:1

我有大约12k文件,其中包含如下字符串:

script_oid("1.3.6.1.4.1.25623.7.0.391810");

我需要将最后6位数字(391810)更改为从300000开始的顺序ID。到目前为止,我已经这样做了:

`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上运行它。

在此先感谢您的帮助。

最好的祝福,

linux awk sed
1个回答
2
投票

请试试:

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的出现顺序分配。

© www.soinside.com 2019 - 2024. All rights reserved.