我正在对一个文件进行分析,希望在将此文件传递下一个流程之前,对其中的一些字符进行掩码处理(同时保留它们原始的字节计数)。例如,给定file.txt
:
Hello there Cory Klein
Have fun
Hello there Samantha Rodgers
使用sed编写正则表达式来匹配名称并将其替换为
XXXXX
非常简单:$ sed -e "s/\(Hello there \).*/\1XXXXX/" file.txt
Hello there XXXXX
Have fun
Hello there XXXXX
但是我想用X
字符替换名称中的每个字符,就像这样:
Hello there XXXX XXXXX
Have fun
Hello there XXXXXXXX XXXXXXX
如何用另一个字符替换与正则表达式匹配的所有字符?
使用任何正则表达式工具,例如sed
、awk
、perl
等。我确定我可以编写一个简单的Python脚本来完成这个任务,但我很好奇是否可以仅使用正则表达式实现,这可能更为简洁。如果是这样,我很想学习如何做到这一点,以便将来在其他地方可以应用该概念。
perl -lpe 's/Hello there\s*\K(.*)/$1=~s#\S#X#gr/ge'
(演示)。 - Wiktor Stribiżew