为什么反斜杠'\';在linux中的工作方式如此不同?
当我像这样在反斜杠周围加上单引号时 回音'\' 它打印反斜杠,不需要转义 但是当我在sed中像这样使用相同的东西时 sed's/\/a/g':尝试将反斜杠替换为 或者在grep的情况下 echo“\\/”| grep“\”,它不起作用,也需要转义为什么反斜杠'\';在linux中的工作方式如此不同?,linux,sed,Linux,Sed,当我像这样在反斜杠周围加上单引号时 回音'\' 它打印反斜杠,不需要转义 但是当我在sed中像这样使用相同的东西时 sed's/\/a/g':尝试将反斜杠替换为 或者在grep的情况下 echo“\\/”| grep“\”,它不起作用,也需要转义 为什么这个反斜杠需要转义?我的意思是,所有这些都失去了意义,对吗?反斜杠的问题是,它有许多特殊的含义,适用于多种工具和多种上下文 在单引号中,它失去了对shell的特殊意义(当相关或不确定时,请学会用它的名称标记问题),但它保留了对sed的特殊意义(对
为什么这个反斜杠需要转义?我的意思是,所有这些都失去了意义,对吗?反斜杠的问题是,它有许多特殊的含义,适用于多种工具和多种上下文 在单引号中,它失去了对shell的特殊意义(当相关或不确定时,请学会用它的名称标记问题),但它保留了对
sed
的特殊意义(对于正则表达式语法来说,它是特殊的,因此sed
和grep
)
通常你可以避开反斜杠而不是引用它。它不一定能让东西可读,但在某些情况下,它可以。这就是我在没有引号的情况下grep literal\
的方式:
grep \\\\
Shell将
\\\\
转换为\\
,而\\
在正则表达式中的意思是文字\
反斜杠的问题在于,对于多个工具和多个上下文,它有许多特殊的含义
在单引号中,它失去了对shell的特殊意义(当相关或不确定时,请学会用它的名称标记问题),但它保留了对sed
的特殊意义(对于正则表达式语法来说,它是特殊的,因此sed
和grep
)
通常你可以避开反斜杠而不是引用它。它不一定能让东西可读,但在某些情况下,它可以。这就是我在没有引号的情况下grep literal\
的方式:
grep \\\\
Shell将
\\\\
转换为\\
,而\\
在正则表达式中的意思是文字\
哇,我刚刚注意到grep'\\\\'和grep\\\\\是一样的,非常令人困惑:(哇,我刚刚注意到grep'\\\\'和grep\\\\\\\\\\是一样的,非常令人困惑:(Re您的sed
命令:您的意思是正斜杠,为了使替换生效,您需要确保您有三个分隔符:sed's/\//a/g'文件
。请注意,您可以使用,例如:sed's%/%a%g'文件
。HTH.Re您的sed
命令:您的意思是正斜杠,为了使替换生效。)rk,您需要确保有三个分隔符:sed's/\//a/g'文件
。请注意,您可以使用,例如:sed's%/%a%g'文件
。HTH。