分页: 1 / 1

shell如何实现每个字符前都加\

发表于 : 2016-01-28 21:11
kashu
有这么一行字符串:

代码: 全选

第10话 累得像条"狗"-XMTMzMzgwNzY2OA_part1.txt
我想让这行字符串中每一个字符前面都加上\

效果如下:

代码: 全选

\第\1\0\话\ \累\得\像\条\"\狗\"\-\X\M\T\M\z\M\z\g\w\N\z\Y\2\O\A\_\p\a\r\t\1\.\t\x\t
请问在shell环境下如何实现?

要求:实现的代码越短越好(如果一条命令能实现最好了)。

Re: shell如何实现每个字符前都加\

发表于 : 2016-01-28 21:25
自由建客

代码: 全选

s/\(.\)/\\\1/g

Re: shell如何实现每个字符前都加\

发表于 : 2016-01-28 21:29
kashu
自由建客 写了:

代码: 全选

s/\(.\)/\\\1/g
不行,这只加了一个\而已
kashu:/tmp$ echo '第10话 累得像条"狗"-XMTMzMzgwNzY2OA_part1.txt' | sed -n 's/\(.\)/\\\1/p'
\第10话 累得像条"狗"-XMTMzMzgwNzY2OA_part1.txt

Re: shell如何实现每个字符前都加\

发表于 : 2016-01-28 21:30
vickycq

代码: 全选

a="第10话 累得像条"狗"-XMTMzMzgwNzY2OA_part1.txt"
for i in `seq 1 $((${#a} - 1))`; do b="$b${a:i:1}\\"; done
echo $

Re: shell如何实现每个字符前都加\

发表于 : 2016-01-28 21:34
kashu
得到的结果不对
kashu:/tmp$ echo $b
1\ 0\ 话\ \ 累\ 得\ 像\ 条\ 狗\ -\ X\ M\ T\ M\ z\ M\ z\ g\ w\ N\ z\ Y\ 2\ O\ A\ _\ p\ a\ r\ t\ 1\ .\ t\ x\ t\ \ 1\ 0\ 话\ \ 累\ 得\ 像\ 条\ 狗\ -\ X\ M\ T\ M\ z\ M\ z\ g\ w\ N\ z\ Y\ 2\ O\ A\ _\ p\ a\ r\ t\ 1\ .\ t\ x\ t\ \

Re: shell如何实现每个字符前都加\

发表于 : 2016-01-28 21:37
vickycq
kashu 写了:得到的结果不对

代码: 全选

a="第10话 累得像条"狗"-XMTMzMzgwNzY2OA_part1.txt"
for i in `seq 0 $((${#a} - 1))`; do b="$b\\${a:i:1}"; done
echo $b
\第\1\0\话\ \累\得\像\条\狗\-\X\M\T\M\z\M\z\g\w\N\z\Y\2\O\A\_\p\a\r\t\1\.\t\x\t

Re: shell如何实现每个字符前都加\

发表于 : 2016-01-28 21:39
kashu
抱歉,原来这样可以的,谢谢!

echo '第10话 累得像条"狗"-XMTMzMzgwNzY2OA_part1.txt' | sed -n 's/\(.\)/\\\1/gp'