什么GNU/Linux的命令行的工具,我会用于进行搜索和替换上一个文件?

StackOverflow https://stackoverflow.com/questions/155934

  •  03-07-2019
  •  | 
  •  

什么GNU/Linux的命令行的工具,我会用于进行搜索和替换上一个文件?

可以搜索文本,并更换,被指定在一个regex格式?

有帮助吗?

解决方案

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, - regexp-extended                   在脚本中使用扩展的正则表达式。

FreeBSD 版本也支持这些选项。 NetBSD OpenBSD 版本仅支持 -r

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

其他提示

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的工作。

考虑红宝石作为一种替代Perl。它偷了最Perl的一衬命令行args(-i, -p, -l, -e, -n)和自动设置 $_ 你喜欢Perl并且具有充足的regex善。此外,红宝石的语法可以更加舒适,更易于阅读或写比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或heaveier量的红宝石。使用无论是最简单的编写。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top