我有大约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上运行它。

在此先感谢您的帮助。

最好的祝福,

最佳答案

请试试:

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分配。

关于linux - 用SED中的顺序ID替换数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55638243/

10-09 08:42