我有一堆Linux
在各个子文件夹中命名的文件,其中全线
DSY_OS_Release=`lsb_release --short --id |sed 's/ //g'`
需要替换为
DSY_OS_Release="RedHatEnterpriseWorkstation"
如何使用命令行实现此目的?
我知道这听起来像是一个重复的问题,但我找不到任何适用于我相当复杂的字符串的答案。
答案1
如果不需要匹配整行,那么只需使用
sed 's/^DSY_OS_Release=.*/DSY_OS_Release="RedHatEnterpriseWorkstation"/'
根据您的sed
实现,您可以使用sed -i '...' file
,或者您可能必须重定向到新文件并随后替换原始文件。
至于如何在一组文件上运行它:如果所有文件都匹配特定模式,例如*.config
, then (假设 GNU sed
):
find /some/path -type f -name '*.config' \
-exec sed -i '...as above...' {} \;