perl -pe命令

时间:2015-11-05 05:05:23

标签: perl

所以我已经对perl -pe命令进行了研究,我知道它从文件中获取记录,并以另一个文件的形式从中创建输出。现在我对这条命令行如何工作感到有点困惑,因为它有点修改,所以我无法弄清楚perl pe在其中的作用究竟是什么。这是命令:

cd /usr/kplushome/entities/Standalone/config/webaccess/WebaccessServer/etc
(PATH=/usr/ucb:$PATH; ./checkall.sh;) | perl -pe "s,^,          ,g;"

知道它在这里有用吗?

上述陈述中更令人困惑的是这一部分:"s,^, ,g;"

非常感谢任何帮助。如果你们需要更多信息,请告诉我。谢谢!

2 个答案:

答案 0 :(得分:2)

它只需要-e标志给出的表达式(在本例中为s,^, ,g)并在输入的每一行上执行它,打印修改后的行(即表达式的结果)到输出。

表达式本身就是一种称为正则表达式(或者#34;正则表达式"或者#34;正则表达式"),并且是一个学习本身的领域。快速谷歌"正则表达教程"和#34;开始使用正则表达式"大量的结果,所以这可能是一个很好的起点。

这个表达式s,^, ,g在行的开头添加了十个空格,正如我之前所说,perl -p将它应用于每一行。

答案 1 :(得分:1)

"s,^,          ,g;"

s用于替换。语法是s/somestring/replacement/ 在您的命令中,,是分隔符,而不是/ g用于全局工作,意味着替换所有事件。

例如:

perl -p -i -e "s/oldstring/newstring/g" file.txt;

在file.txt中,所有oldstring都将替换为newstring i用于原位文件编辑。

有关信息,请参阅这些文档:

perlre
perlretut
perlop