TL; DR我想知道Python中的选项是什么,它可能大致对应于" -pe" Perl中的选项。
我曾经使用PERL一段时间,但是现在,我一直在转向PYTHON因为它的简单性和简单性。当我需要在shell提示符上进行简单的文本处理时,我使用了perl -pe选项。以下是一个例子。
grep foo *.txt | perl -pe 's/foo/bar/g'
要在Python中做类似的事情,有人可以向我解释我该怎么做吗?
答案 0 :(得分:3)
public class Class1
{
private String number = null;
private static Class1 class1 = null;
public static Class1 getInstance()
{
if(class1 == null)
{
class1 = new Class1();
}
return class1;
}
private Class1(){}
public void setNumber(String number)
{
this.number = number;
}
public String getNumber()
{
return this.number;
}
}
public class Class2
{
Class1 cla = Class1.getInstance();
public String number_to_compute = cla.getNumber();
}
public class Class3
{
static Class1 class1 = Class1.getInstance();
public static void main(String args[]) {
class1.setNumber("123");
Class2 class2 = new Class2();
System.out.println(class1.getNumber());
System.out.println(class2.number_to_compute);
}
}
是两个参数-pe
和-p
的组合。 -e
选项大致相当于Python的-e
选项,它允许您指定在命令行上运行的代码。没有Python等价的-c
,它有效地添加代码来在从标准输入读取的循环中运行传递的代码。为此,您实际上必须在代码中编写相应的循环,以及从标准输入中读取的代码。
答案 1 :(得分:1)
Perl虽然是一种完全成熟的编程语言,但最初被认为是一种用于文本操作的工具。
另一方面,Python一直是一种通用的编程语言。它可以处理文本和文本的灵活性,与Java或C ++相比具有极大的灵活性,但是它将在其通用语法中完成,没有这些规则的例外,包括正则表达式的特殊语法,在没有其他指令的情况下它们本身就是一个程序。打开,读取和写入文件同样如此。所以,你可以用“python -c ...”来从命令行运行一个Python脚本 - 但是你的命令必须是一个完整的程序 - 包括开头,中间和结尾。
因此,对于在stdin中传递的几个文件中的简单正则表达式替换,您可以尝试一下:
grep foo *txt| python3 -c "import sys, re, os; [(open(filename + 'new', 'wt').write(re.sub ('foo', 'bar', open(filename).read())), os.rename(filename + "new", filename))for filename in sys.stdin]"