如何用bash sed移除Python依赖文件中的所有版本号
用sed命令移除Python依赖文件中的版本号
需求说明:
现有一个定义了500余个包的Python依赖文件,每个包行格式为包名 == 版本号,需要用bash的sed命令移除所有包行的版本号,保留== 的格式。
输入示例
# comment string python_package_a == 1.2.3 # some text python_package_b == 2.3.4 # test bar hello == 0.1.2 # many other packages (more than 500 packages) other_500_packages == x.y.z
期望输出
# comment string python_package_a == # some text python_package_b == # test bar hello == # many other packages (more than 500 packages) other_500_packages ==
实现的sed命令
如果仅查看修改结果、不直接修改原文件:
sed -E 's/([[:alnum:]_]+ == ).*/\1/' requirements.txt
如果需要直接修改原文件(若要备份原文件,可加-i.bak参数,比如sed -i.bak -E ...):
sed -i -E 's/([[:alnum:]_]+ == ).*/\1/' requirements.txt
命令解释
-E:启用扩展正则表达式语法,让分组括号无需转义,写法更简洁([[:alnum:]_]+ == ):捕获包名(由字母、数字、下划线组成)和后面的==部分,作为第一个分组.*:匹配分组之后的所有内容(也就是任意格式的版本号部分)\1:将匹配到的整行内容替换为之前捕获的第一个分组,从而保留包名和==,移除版本号
注:注释行、空行不会被修改,因为正则仅匹配符合包名 == 版本号格式的行。
内容的提问来源于stack exchange,提问作者stackbiz
相关产品推荐
相关产品推荐

