![Sed 用反斜杠空格替换空格(Bash)](https://linux22.com/image/1527925/Sed%20%E7%94%A8%E5%8F%8D%E6%96%9C%E6%9D%A0%E7%A9%BA%E6%A0%BC%E6%9B%BF%E6%8D%A2%E7%A9%BA%E6%A0%BC%EF%BC%88Bash%EF%BC%89.png)
我正在尝试用反斜杠空格替换该文本文件中的每个空格。
cat prefixedfiles.txt | sed "s![[:space:]]! \!g"
原来的:
A a a
结果:
A\ a\ a
答案1
sed 's! !\\ !g' prefixedfiles.txt
已修复几个问题:
'
而不是"
阻止bash
解释!
符号并允许将反斜杠引用为\\
;[[:space:]]
匹配的不仅仅是空格;你可能想要或者不想要,我使用了常规空格;cat
在这里是多余的;sed
可以将文件名作为参数(即使不能,语法sed < file.txt
仍然比更好cat file.txt | sed
)。
答案2
转义反斜杠字符。
cat prefixedfiles.txt | sed "s![[:space:]]! \\!g"
\char
匹配字符, 在哪里字符是 $、*、.、[、\ 或 ^ 之一。请注意,唯一可以移植地假设被解释的 C 类反斜杠序列是和\n
;\\
尤其\t
是不可移植的,并且在大多数 sed 实现下匹配“t”,而不是制表符。