Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么反斜杠'\';在linux中的工作方式如此不同?_Linux_Sed - Fatal编程技术网

为什么反斜杠'\';在linux中的工作方式如此不同?

为什么反斜杠'\';在linux中的工作方式如此不同?,linux,sed,Linux,Sed,当我像这样在反斜杠周围加上单引号时 回音'\' 它打印反斜杠,不需要转义 但是当我在sed中像这样使用相同的东西时 sed's/\/a/g':尝试将反斜杠替换为 或者在grep的情况下 echo“\\/”| grep“\”,它不起作用,也需要转义 为什么这个反斜杠需要转义?我的意思是,所有这些都失去了意义,对吗?反斜杠的问题是,它有许多特殊的含义,适用于多种工具和多种上下文 在单引号中,它失去了对shell的特殊意义(当相关或不确定时,请学会用它的名称标记问题),但它保留了对sed的特殊意义(对

当我像这样在反斜杠周围加上单引号时

回音'\'

它打印反斜杠,不需要转义

但是当我在sed中像这样使用相同的东西时

sed's/\/a/g':尝试将反斜杠替换为

或者在grep的情况下

echo“\\/”| grep“\”,它不起作用,也需要转义


为什么这个反斜杠需要转义?我的意思是,所有这些都失去了意义,对吗?

反斜杠的问题是,它有许多特殊的含义,适用于多种工具和多种上下文

在单引号中,它失去了对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。