我尝试使用 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