使用sed更改文件中的字符串?

Shr*_*asD 3 linux awk sed gawk

我有一个带模板的inputfile,如下所示.我想更改版本:使用sed.

    Package: somename
    Priority: extra
    Section: checkinstall
    Maintainer: joe@example.com
    Architecture: i386
    Version: 3.1.0.2-1
    Depends:
    Provides: somename
    Description: some description
Run Code Online (Sandbox Code Playgroud)

目前我正在使用当前版本grep -m 1 Version inputfile | sed 's/[:_#a-zA-Z\s"]*//g',我正在尝试用当前版本替换sed 's/3.1.0.2-1/3.1.0.2/' inputfile

但是这似乎不起作用,但是当我在命令行中使用echo尝试它时,它可以工作. echo 'Version: 3.0.9.1' | sed 's/3.0.9.1/3.2.9.2/'

Output: Version: 3.2.9.2
Run Code Online (Sandbox Code Playgroud)

任何有关如何实现这一目标的帮助将不胜感激.我希望在不获取文件当前版本的情况下更改版本.

提前致谢

Die*_*ano 10

你不需要grep.

sed -i '/Version/s/3\.1\.0\.2-1/3.1.0.2/' <files>
Run Code Online (Sandbox Code Playgroud)


And*_*zos 8

你想使用"-i"开关sed"编辑文件[I] n place."

见sed手册页:http://unixhelp.ed.ac.uk/CGI/man-cgi ? sed