欢迎转载,请支持原创,保留原文链接:blog.ilibrary.me

shell命令把单词拆成单个字母

想要把一个字符串每相邻字母中间都插入一个星号,躲避审*查。 google了一下怎样把单词拆开,发现解决方法还挺多的。

echo orange | sed 's/./&*/g'
# o*r*a*n*g*e*


# 切分换行
echo orange | sed 's/./&\n/g'  # sed way, Mac 下无法解析\n, 可以用真实换行来做
echo orange | sed 's/./&\
/g'  # Mac 换行

echo orange | grep -o . | tr -s '\n' '*'       # grep way, 就是查找字母,每个字母算一个匹配,单独占一行,  然后用tr(translate)替换换行符
echo orange | fold -w 1  | tr -s '\n' '*'      # fold way

关于fold命令

fold 根据指定的宽度重新格式化文本

关于grep

-i 忽略pattern中的大小写
-r 递归地指定文件所在目录中的所有子目录中的文件
-v 查找与pattern不匹配的行
定义输出方式:
-o 仅打印出匹配的一段,而非整行
-n 打印出匹配行的行号
-l 仅打印出匹配行所在的文件
-c 打印出每个文件中匹配行的总数
-A num 显示匹配行之后的num行 
-B num 显示匹配行之前的num行
-C num 相当于 -A num 与 -B num 的组合
--color=auto 将pattern在匹配行中高亮输出

参考

split-a-word-into-characters-unix http://www.runoob.com/linux/linux-comm-fold.html 如何使用grep SED 简明教程