当前位置:  开发笔记 > 编程语言 > 正文

我将使用什么GNU/Linux命令行工具来执行文件的搜索和替换?

如何解决《我将使用什么GNU/Linux命令行工具来执行文件的搜索和替换?》经验,为你挑选了4个好方法。

我将使用什么GNU/Linux命令行工具来执行文件的搜索和替换?

可以用正则表达式格式指定搜索文本和替换吗?



1> Cristian Ciu..:
sed 's/a.*b/xyz/g;' old_file > new_file

GNU sed(你可能拥有)更加通用:

sed -r --in-place 's/a(.*)b/x\1y/g;' your_file

以下是这些选项的简要说明:

-i [SUFFIX], - in -place [= SUFFIX]编辑文件(如果提供扩展名则进行备份)

-r, - relgexp-extended 在脚本中使用扩展的正则表达式.

在FreeBSD的版本还支持这些选项.在NetBSD的和OpenBSD的版本只支持-r.

如果您想了解有关sed的更多信息,Cori建议您使用本教程.



2> Michael Cram..:

Perl是为此而发明的:

perl -pi -e 's/foo/bar/g;' *.txt

这些单引号中的任何正常s ///模式.您可以使用以下内容保留备份:

perl -pi.bak -e 's/foo/bar/g;' *.txt

或管道:

cat file.txt | perl -ne 's/foo/bar/g;' | less

但这确实更像是sed的工作.



3> Brian Carper..:

将Ruby视为Perl的替代品.它偷走了大多数Perl的一个班轮命令行ARGS(中-i,-p,-l,-e,-n),并自动设置$_为你喜欢的Perl确实并有大量的正则表达式的善良.此外,Ruby的语法可能比Perl或sed更舒适,更易于阅读或书写.(或者不是,取决于你的口味.)

ruby -pi.bak -e '$_.gsub!(/foo|bar/){|x| x.upcase}' *.txt

perl -pi.bak -e 's/(foo|bar)/\U\1/g' *.txt

在许多情况下,在处理单行时,无论是使用轻量级sed还是重量级Perl还是重量级Ruby,性能都不足以解决问题.使用最容易写的东西.



4> cori..:

sed,流编辑器,是的,它使用正则表达式.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有