sed:用任意字符串替换某个模式

sed:用任意字符串替换某个模式

我正在尝试清理日志文件以提高可读性 - 那里有很多不必要的东西,不符合我的需要 - 我基本上必须用空格或空字符替换 sshd[xxxx],其中 xxxx 是任意数字。虽然我可以替换已知字符串,但我不知道在这种情况下如何使用 sed 通配符 - 那么 - 我该怎么做呢?

答案1

目前尚不清楚您是否也想替换“sshd”,因此我假设您是这样做的。

   sed 's/sshd\[[0-9]*\]//g' file

否则,

   sed 's/sshd\[[0-9]*\]/sshd[]/g' file

答案2

您正在寻找替代全部sshd里面的数字后面[]没有任何内容。要选择数字,您可以使用范围[0-9]\+,其中[0-9]匹配任何数字,这\+意味着之前有一个或多个

因此,对于你的情况,用零替换数字的正则表达式将是

sed -r s/\[[0-9]\+\]/\[\]/

其中-r启用扩展正则表达式,如上文所述。\[\]只是为了转义[and,]这样它们就不会被 解释sed

对于正则表达式运算符,\+请查看本节gawk手册中,有关字符列表,请[0-9]参见本节—— 您在那里看到的大部分内容sed也适用于。

相关内容