如果我在perl中查找文件名模式,您可以这么做:
ls -l | perl -n -e'if(/.*180205.*/){ print "$_\n"; }'
-n
导致Perl在程序周围采用以下循环,这使得迭代文件名参数有点像sed -n
或awk
:LINE: while (<>) { ... # your program goes here }
我如何在python3中编码? (python3 --help显示不是这样的选项)
答案 0 :(得分:3)
带有python -c '...'
的Python oneliner受到极大限制,因为Python语法假定每个语句都位于自己的行上。您可以将一些语句与分号“;
”组合在一起,但是某些语句需要有自己的行,特别是像循环这样的复合语句。如果你想在命令行上写这个,我们必须将所有行的循环表达为列表理解:
python3 -c 'import re, fileinput; [print(line, end="") for line in fileinput.input() if re.search("180205", line)]'
这当然是不可读的,因为Python不适合单行。循环fileinput.input()
类似于Perl的-n
选项。
如果您想使用Python,请考虑编写脚本。这更具可读性:
import re, fileinput
for line in fileinput.input():
if re.search("180205", line):
print(line, end="")