Sed 用反斜杠空格替换空格(Bash)

Sed 用反斜杠空格替换空格(Bash)

我正在尝试用反斜杠空格替换该文本文件中的每个空格。

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"

sed 手册 5.3 基本正则表达式语法概述

\char
匹配字符, 在哪里字符是 $、*、.、[、\ 或 ^ 之一。请注意,唯一可以移植地假设被解释的 C 类反斜杠序列是和\n;\\尤其\t是不可移植的,并且在大多数 sed 实现下匹配“t”,而不是制表符。

相关内容