我需要在多个文件中搜索一个短语并在屏幕上显示结果.
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)
但是,最后一个是编译的,但在命令行中不返回任何内容.任何修改我的代码的建议.十分感谢!
要perl以sed你的风格使用你应该尝试-p标志:
perl -p -e "s/SCALE_//;" -e "s/_main_.*log:/ /;"
Run Code Online (Sandbox Code Playgroud)
从以下的解释perlrun:
-p
导致Perl假定你的程序周围有以下循环,这使得它迭代文件名参数有点像sed:
Run Code Online (Sandbox Code Playgroud)LINE: while (<>) { ... # your program goes here } continue { print or die "-p destination: $!\n"; }