sed + 在每个数字前添加字符

sed + 在每个数字前添加字符

我想在每个数字前添加一个“/” 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'

相关内容