如何在命令行中从sed语句更改为Perl语句?

0 perl grep sed

我需要在多个文件中搜索一个短语并在屏幕上显示结果.

grep "EMS" SCALE_*
| sed -e "s/SCALE_//" -e
"s/_main_.*log:/ /" 
Run Code Online (Sandbox Code Playgroud)

由于我不熟悉sed,我将其更改为Perl以方便使用.

grep "EMS" SCALE_*
| perl -e "s/SCALE_//" -e
"s/_main_.*log:/ /"
Run Code Online (Sandbox Code Playgroud)

要么

grep "EMS" SCALE_*
| perl -e "s/SCALE_//; s/_main_.*log:/ /"  
Run Code Online (Sandbox Code Playgroud)

但是,最后一个是编译的,但在命令行中不返回任何内容.任何修改我的代码的建议.十分感谢!

Bru*_*ine 8

perlsed你的风格使用你应该尝试-p标志:

perl -p -e "s/SCALE_//;" -e "s/_main_.*log:/ /;"
Run Code Online (Sandbox Code Playgroud)

从以下的解释perlrun:

-p

导致Perl假定你的程序周围有以下循环,这使得它迭代文件名参数有点像sed:

LINE:
  while (<>) {
    ...             # your program goes here
  } continue {
    print or die "-p destination: $!\n";
  }
Run Code Online (Sandbox Code Playgroud)