Linux 使用sed更改文件中的字符串?
我有一个输入文件,模板如下所示。我想更改版本:使用sedLinux 使用sed更改文件中的字符串?,linux,sed,awk,gawk,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 目前,我
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-m1 version inputfile|sed's/[:\uz#a-zA-Z\s”]*//g'
获取当前版本,并试图用sed's/3.1.0.2-1/3.1.0.2/'inputfile
然而,这似乎不起作用,但当我在命令行中使用echo尝试它时,它就起作用了。
echo'版本:3.0.9.1'| sed's/3.0.9.1/3.2.9.2/'
Output: Version: 3.2.9.2
任何关于我如何能做到这一点的帮助将不胜感激。最好是我想改变文件中没有得到当前版本的版本
提前感谢如果您有输入错误,最后一个点应该是破折号,请尝试以下操作:
sed 's/3.1.0.2-1/3.1.0.2-2/'
sed的名称
sed
字面上来自“流编辑器”-您看到的行为就是它的设计方式。当您说:
sed 'some commands' file
它读取文件,执行命令并打印结果-它不会将其保存回文件(尽管某些版本的sed
有一些选项可以告诉它这样做)。您可能希望执行以下操作:
sed 'some commands' file > newfile
然后验证<代码> NexFix是正确的,然后<代码> MV NeWFLASH文件。如果你绝对确定你的编辑脚本是正确的,并且你可以处理错误的数据重写你的文件的结果,如果不是,那么你可以考虑使用现成的编辑标志,但是保存到TimaA通常更安全。您要使用“-i”开关切换到sed以进行“编辑文件[i]n位置”
请参阅sed手册页:您不需要grep
sed -i '/Version/s/3\.1\.0\.2-1/3.1.0.2/' <files>
sed-i'/Version/s/3\.1\.0\.2-1/3.1.0.2/'
很抱歉,我的bash脚本中的错误是打字错误,它是正确的。不过谢谢你指出。这是我的方式,有更好的方式吗?我发现-我不太信任