我想在每个数字前添加一个“/” sed
:
echo 1 2 3 4 5 6 7 | sed 's/[ ^]*/&\//g'
/1 /2 /3 /4 /5 /6 /7/
当我使用此语法时,为什么 7 后面会出现“/”?我该如何修复语法sed
才能得到这个结果:
/1 /2 /3 /4 /5 /6 /7
答案1
尝试一下:
echo '1 2 3 4 5 6 7' | sed 's|\w\+|/&|g'
答案2
修复它:在数字开头前添加斜线(我使用 来:
分隔模式和替换而不是/
,这样就不需要转义斜线了)
% echo 1 2 3 4 5 6 7 | sed 's:\([1-9]\+\):/\1:g'
您的命令的问题在于,您使用来*
匹配space
或插入符号^
. ,并且不只是其中一个,而是任意数量的,包括 0. ,它也匹配行尾(7 之后)(幸运的是,也在行首)。
为了使这个工作适用于任何一个单词(又名非空格),请使用以下命令:
% echo ha hu 1 2 ho | sed 's:[^ ]\+:/&:g'