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

标签 linux sed awk gawk

我有一个带有模板的输入文件,如下所示。我想更改版本:使用 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

目前我正在使用 grep -m 1 Version inputfile | 获取当前版本sed 's/[:_#a-zA-Z\s"]*//g' 并且我正在尝试用 sed 's/3.1.0.2-1/3.1 替换当前版本.0.2/' 输入文件

但是这似乎不起作用,但是当我在命令行中使用 echo 尝试它时它起作用了。 回声'版本:3.0.9.1' | sed 's/3.0.9.1/3.2.9.2/'

Output: Version: 3.2.9.2

任何有关如何实现此目的的帮助都将不胜感激。我最好在不获取文件中的当前版本的情况下更改版本。

提前致谢

最佳答案

你不需要 grep。

sed -i '/Version/s/3\.1\.0\.2-1/3.1.0.2/' <files>

关于linux - 使用sed更改文件中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10919554/

相关文章:

bash - 在 awk 中分配一个 bash 关联数组

linux - 无法创建 redis 集群(抱歉,无法连接到节点)

python - 了解Python中的config文件夹路径

linux - 如何将 "title"添加到 Awk 中的名称字段

linux - 在 Linux 中,有没有办法在分隔符上对齐文本?

linux - 如何使用sed将目录下所有文件的windows路径更改为linux路径

ruby - 在文件同步之前 vagrant up provisioning

bash - 如何根据第 1 列 bash script-sed-awk 的值从第 2 列中选择最大数

bash - 如何替换特定行号的换行符?

awk - 我想从 tcl 脚本执行 awk 命令