使用 sed 将文件中的点替换为下划线

使用 sed 将文件中的点替换为下划线

我尝试使用 sed 编辑文件的输出。文件的内容是

cat /tmp/Group_RM
[email protected]
[email protected]

我试图获取如下输出:

cat /tmp/Group_RM
t_p@k_p
t_m@k_k

我尝试了以下命令但输出看起来很奇怪:

cat /tmp/Group_RM | sed 's/./_/g'

输出为:

____ ___
_______

sed 用下划线替换所有字符。当我尝试用“.”替换“_”时,sed 运行正常。

答案1

您需要转义.类似\...是一个特殊的元字符,匹配任意单个字符

$ sed 's/\./_/g' Group_RM
t_p@k_p
t_m@k_k

顺便说一句,cat不需要——sed可以自己处理文件。

答案2

原因是点在正则表达式中是特殊字符。如果您指的是实际的点,则需要使用 \ 进行转义。

另外,你不需要 cat,你可以直接将文件名提供给 sed。这样做有效:

sed 's/\./_/g' myfile.txt

相关内容