Linux的基本SED问题

Tre*_*vor 1 sed

临时文件中只有22.5.

我用

sed 's/.//' Temp
Run Code Online (Sandbox Code Playgroud)

我期待225但得到2.5

为什么?

Mar*_*off 8

点是一个特殊字符,意思是"匹配任何字符".

$ sed s/\\.// temp
225
Run Code Online (Sandbox Code Playgroud)

你会认为你可以做到sed s/\.// temp,但是你的shell会逃脱那个单反斜杠并传递s/.//给sed ..所以,你需要放两个反斜杠来传递一个文字反斜杠到sed,这将正确地\.视为一个文字点.或者,您可以引用命令来保留文字反斜杠:

$ sed "s/\.//" temp
225
Run Code Online (Sandbox Code Playgroud)

你得到2.5的原因s/.//是这个点匹配文件中的第一个字符并将其删除.