用SED中的顺序ID替换数字

时间:2019-04-11 17:33:36

标签: linux awk sed

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

预先感谢您的帮助。

最诚挚的问候,

1 个答案:

答案 0 :(得分: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分配的。