perl命令行一个衬里+匹配文件中的行后删除单词

时间:2014-06-10 13:37:04

标签: linux perl bash shell

请告知如何删除导出PASSORD =

后面的第一个单词

by perl one liner code(在linux机器上)

例如,我在我的文件中有这一行

 export PASSORD=HG&@VFQ1

运行perl语法后的预期结果应该是没有密码

 export PASSORD=

perl必须与该行完全匹配 - > “export PASSORD =”否则密码不会从文件中删除。

示例:在以下情况下不得删除密码:

 export PASSORD =HG&@VFQ1
 exportPASSORD=HG&@VFQ1
 export_PASSORD=HG&@VFQ1
 #export_PASSORD=HG&@VFQ1

我创建了基本的perl one liner语法来删除文件中的任何单词,但是只有在匹配行后才能成功添加删除单词的功能 - > export PASSORD =

 perl -i -pe 's/\QANY_STRING//' file 

2 个答案:

答案 0 :(得分:5)

它将删除export PASSORD=

之后的所有内容
perl -i -pe 's/^export PASSORD=\K.*//' file

要获得\K正面看法,需要Perl v5.10或更高版本。

对于旧版本,

perl -i -pe 's/(?<=export PASSORD=).*//' file
   -or-
perl -i -pe 's/(export PASSORD=).*/$1/' file
   -or-
perl -i -pe 's/export PASSORD=.*/export PASSORD=/' file

答案 1 :(得分:2)

只需使用替代品。 ^匹配一行开头。

perl -i~ -pe 's/^(export PASSORD=).*/$1/'