如何在具有SED或AWK的文件中用单个句点替换双周期?

时间:2014-05-07 16:56:35

标签: bash awk sed

建议的方法是什么,并将其保存到新文件? 我试过了

sed -i 's/.././g' /tmp/folder/domains.new

但它也取代了单个时期..

2 个答案:

答案 0 :(得分:1)

句号是一个RE元字符,因此您需要将其转义为字面意思:

sed 's/\.\././g' oldfile > newfile

答案 1 :(得分:1)

Ed Morton有正确的答案。这是另一种确保RE字元字符字面意义的方法(将它们包装在字符类中):

sed -i 's/[.][.]/./g' /tmp/folder/domains.new

sed -i 's/[.]\{2\}/./g' /tmp/folder/domains.new

或使用-E选项启用扩展正则表达式,以防止转义{}

sed -i -E 's/[.]{2}/./g' /tmp/folder/domains.new

请注意,在替换部分中,.和其他元字符始终被视为文字而非特殊。