sh/bash/dash/ksh/zsh等Shell脚本
-
kashu
- 帖子: 451
- 注册时间: 2014-02-07 17:31
- 系统: Xubuntu 14.04.5 64位
#1
帖子
由 kashu » 2016-01-28 21:11
有这么一行字符串:
代码: 全选
第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环境下如何实现?
要求:实现的代码越短越好(如果一条命令能实现最好了)。
-
自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
#2
帖子
由 自由建客 » 2016-01-28 21:25
-
kashu
- 帖子: 451
- 注册时间: 2014-02-07 17:31
- 系统: Xubuntu 14.04.5 64位
#3
帖子
由 kashu » 2016-01-28 21:29
不行,这只加了一个\而已
kashu:/tmp$ echo '第10话 累得像条"狗"-XMTMzMzgwNzY2OA_part1.txt' | sed -n 's/\(.\)/\\\1/p'
\第10话 累得像条"狗"-XMTMzMzgwNzY2OA_part1.txt
-
vickycq
- 帖子: 4507
- 注册时间: 2011-03-20 13:12
- 系统: Debian
- 来自: 山东省寿光县
-
联系:
#4
帖子
由 vickycq » 2016-01-28 21:30
代码: 全选
a="第10话 累得像条"狗"-XMTMzMzgwNzY2OA_part1.txt"
for i in `seq 1 $((${#a} - 1))`; do b="$b${a:i:1}\\"; done
echo $
上次由
vickycq 在 2016-01-28 21:35,总共编辑 1 次。
-
kashu
- 帖子: 451
- 注册时间: 2014-02-07 17:31
- 系统: Xubuntu 14.04.5 64位
#5
帖子
由 kashu » 2016-01-28 21:34
得到的结果不对
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\ \
-
vickycq
- 帖子: 4507
- 注册时间: 2011-03-20 13:12
- 系统: Debian
- 来自: 山东省寿光县
-
联系:
#6
帖子
由 vickycq » 2016-01-28 21:37
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
-
kashu
- 帖子: 451
- 注册时间: 2014-02-07 17:31
- 系统: Xubuntu 14.04.5 64位
#7
帖子
由 kashu » 2016-01-28 21:39
抱歉,原来这样可以的,谢谢!
echo '第10话 累得像条"狗"-XMTMzMzgwNzY2OA_part1.txt' | sed -n 's/\(.\)/\\\1/gp'