sh/bash/dash/ksh/zsh等Shell脚本
-
solcomo
- 帖子: 2838
- 注册时间: 2007-04-25 13:12
#1
帖子
由 solcomo » 2008-07-02 14:12
代码: 全选
#!/bin/bash
#取得你所输入的字符存储在str变量中
str="$*"
#设置行数为18
row=18
#取得你所输入字符的个数
num=$((`echo "$str" | wc -m`-1))
#计算列数
col=$(($num/$row+1))
#计算补满最后一列需要的字符数
dmr=$((row-$num%$row))
#对数组循环赋值,从arr[1]开始,一个数组等于一列
m=1
n=0
while [ $m -le $col ]; do
#${str:$n:$row},截取变量str从变量n开始的一共变量row个字符串,然后把半角字符变成全角,并且在每个字符串后边加上│符号
#${str:$n:$row}举个例子就是str=1234567890;echo ${str:0:5}
#得到的结果是12345
arr[m]=`echo ${str:$n:$row} | sed -e 's/ / /g' -e 's/"/"/g' -e "s/'/'/g" -e 's/a/a/g' -e 's/b/b/g' -e 's/c/c/g' -e 's/d/d/g' -e 's/e/e/g' -e 's/f/f/g' -e 's/g/g/g' -e 's/h/h/g' -e 's/i/i/g' -e 's/j/j/g' -e 's/k/k/g' -e 's/l/l/g' -e 's/m/m/g' -e 's/n/n/g' -e 's/o/o/g' -e 's/p/p/g' -e 's/q/q/g' -e 's/r/r/g' -e 's/s/s/g' -e 's/t/t/g' -e 's/u/u/g' -e 's/v/v/g' -e 's/w/w/g' -e 's/x/x/g' -e 's/y/y/g' -e 's/z/z/g' -e 's/A/A/g' -e 's/B/B/g' -e 's/C/C/g' -e 's/D/D/g' -e 's/E/E/g' -e 's/F/F/g' -e 's/G/G/g' -e 's/H/H/g' -e 's/I/I/g' -e 's/J/J/g' -e 's/K/K/g' -e 's/L/L/g' -e 's/M/M/g' -e 's/N/N/g' -e 's/O/O/g' -e 's/P/P/g' -e 's/Q/Q/g' -e 's/R/R/g' -e 's/S/S/g' -e 's/T/T/g' -e 's/U/U/g' -e 's/V/V/g' -e 's/W/W/g' -e 's/X/X/g' -e 's/Y/Y/g' -e 's/Z/Z/g' -e 's/1/1/g' -e 's/2/2/g' -e 's/3/3/g' -e 's/4/4/g' -e 's/5/5/g' -e 's/6/6/g' -e 's/7/7/g' -e 's/8/8/g' -e 's/9/9/g' -e 's/0/0/g' -e 's/,/,/g' -e 's/\./。/g' -e 's/?/?/g' -e 's/\////g' -e 's/:/:/g' -e 's/;/;/g' -e 's/\"/"/g' -e 's/(/︵/g' -e 's/)/︶/g' -e 's/\[/︻/g' -e 's/\]/︼/g' -e 's/{/︷/g' -e 's/}/︸/g' -e 's/!/!/g' -e 's/@/@/g' -e 's/#/#/g' -e 's/%/%/g' -e 's/\^/︿/g' -e 's/\&/&/g' -e 's/\*/*/g' -e 's/-/-/g' -e 's/_/_/g' -e 's/=/=/g' -e 's/+/+/g' -e 's/|/|/g' -e 's/./&│/g'`
let m=m+1
let n=n+row
done
#在字符串尾部添加全角空格和│,以补全最后一列,应该还有简单的方法,但是那时候就想到这个了
while [ $dmr -gt 0 ]; do
arr[$col]="`echo ${arr[$col]} | sed 's/$/ │/'`"
let dmr=$dmr-1
done
#循环输出从最后一个数组的0到2字节开始一直到第一个数组的最后两个字节
for ((i=0;i<=$row*2;i=i+2)) do
echo
for ((j=m;j>=1;j--)) do
echo -n ${arr[j]:i:2}
done
done
代码: 全选
User:~/bin>./test 谁复留君住 叹人生 几翻离合 便成迟暮 最忆西窗同翦烛 却话家山夜雨 不道只 暂时相聚 衮衮长江萧萧木 送遥天 白雁哀鸣去 黄叶下 秋如许 曰归因甚添愁绪 料强似 冷烟寒月 栖迟梵宇 一事伤心君落魄 两鬓飘萧未遇 有解忆 长安儿女 裘敝入门空太 息 信古来 才命真相负 身世恨 共谁语
来│解│宇│因│天│道│暮│谁│
│忆│ │甚│ │只│ │复│
才│ │一│添│白│ │最│留│
命│长│事│愁│雁│暂│忆│君│
真│安│伤│绪│哀│时│西│住│
相│儿│心│ │鸣│相│窗│ │
负│女│君│料│去│聚│同│叹│
│ │落│强│ │ │翦│人│
身│裘│魄│似│黄│衮│烛│生│
世│敝│ │ │叶│衮│ │ │
恨│入│两│冷│下│长│却│几│
│门│鬓│烟│ │江│话│翻│
共│空│飘│寒│秋│萧│家│离│
谁│太│萧│月│如│萧│山│合│
语│息│未│ │许│木│夜│ │
│ │遇│栖│ │ │雨│便│
│信│ │迟│曰│送│ │成│
│古│有│梵│归│遥│不│迟│
上次由
solcomo 在 2008-08-10 13:49,总共编辑 3 次。
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖
☠☯⚔☣☦☃
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
-
greco
- 帖子: 2487
- 注册时间: 2007-04-06 10:24
- 来自: ~/Shanghai
#3
帖子
由 greco » 2008-07-02 14:18
还真去写了
-
xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
-
联系:
#4
帖子
由 xiooli » 2008-07-02 14:19
晕哉,被你抢先了
-
solcomo
- 帖子: 2838
- 注册时间: 2007-04-25 13:12
#5
帖子
由 solcomo » 2008-07-02 14:25
有英文就完蛋了
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖
☠☯⚔☣☦☃
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
-
BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
-
联系:
#6
帖子
由 BigSnake.NET » 2008-07-02 15:06
代码: 全选
# -*- coding: UTF-8 -*-
def VerticalFormater(text, height=8, spliter=u'|', space=u' '):
t = text + space * (height - len(text) % height)
l = len(t)
return '\n'.join([ spliter.join([t[j] for j in range(l-height+i, -1, -height) ]) for i in range(0, height) ])
print VerticalFormater(u'谁复留君住叹人生几翻离合便成迟暮最忆西窗同翦烛却话家山夜雨不道只暂时相聚衮衮长江萧萧木送遥天白雁哀鸣去黄叶下秋如许曰归因甚添愁绪料强似冷烟寒月栖迟梵宇一事伤心君落魄两鬓飘萧未遇有解忆长安儿女裘敝入门空太息信古来才命真相负身世恨共谁语')
代码: 全选
$ python a.py
恨|来|敝|有|落|迟|料|许|哀|萧|暂|话|最|几|谁
共|才|入|解|魄|梵|强|曰|鸣|萧|时|家|忆|翻|复
谁|命|门|忆|两|宇|似|归|去|木|相|山|西|离|留
语|真|空|长|鬓|一|冷|因|黄|送|聚|夜|窗|合|君
|相|太|安|飘|事|烟|甚|叶|遥|衮|雨|同|便|住
|负|息|儿|萧|伤|寒|添|下|天|衮|不|翦|成|叹
|身|信|女|未|心|月|愁|秋|白|长|道|烛|迟|人
|世|古|裘|遇|君|栖|绪|如|雁|江|只|却|暮|生
Exit status: 0
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
-
HuntXu
- 帖子: 5776
- 注册时间: 2007-09-29 3:09
#7
帖子
由 HuntXu » 2008-07-02 15:11
矩阵...
HUNT Unfortunately No Talent...
-
greco
- 帖子: 2487
- 注册时间: 2007-04-06 10:24
- 来自: ~/Shanghai
#8
帖子
由 greco » 2008-07-02 15:13
-
solcomo
- 帖子: 2838
- 注册时间: 2007-04-25 13:12
#9
帖子
由 solcomo » 2008-07-02 18:02
为了不发生灾难,大家不要把英文竖着写
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖
☠☯⚔☣☦☃
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
-
xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
-
联系:
#11
帖子
由 xiooli » 2008-07-02 18:17
把英文转换为全角就ok了
-
solcomo
- 帖子: 2838
- 注册时间: 2007-04-25 13:12
#12
帖子
由 solcomo » 2008-07-02 18:23
xiooli 写了:把英文转换为全角就ok了
咋转?
一个utf8相当于3个ascII
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖
☠☯⚔☣☦☃
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
-
xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
-
联系:
#13
帖子
由 xiooli » 2008-07-02 18:24
solcomo 写了:xiooli 写了:把英文转换为全角就ok了
咋转?
一个utf8相当于3个ascII
我也母鸡哦。
-
BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
-
联系:
#14
帖子
由 BigSnake.NET » 2008-07-02 18:25
solcomo 写了:xiooli 写了:把英文转换为全角就ok了
咋转?
一个utf8相当于3个ascII
代码: 全选
[VK]
NAME=全角符号
`=`  ̄
1=1 !
2=2 @
3=3 #
4=4 ¥
5=5 %
6=6 ^
7=7 &
8=8 *
9=9 (
0=0 )
-=- _
=== +
q=q Q
w=w W
e=e E
r=r R
t=t T
y=y Y
u=u U
i=i I
o=o O
p=p P
[=[ {
]=] }
\=\ |
a=a A
s=s S
d=d D
f=f F
g=g G
h=h H
j=j J
k=k K
l=l L
;=; :
'=' "
z=z Z
x=x X
c=c C
v=v V
b=b B
n=n N
m=m M
,=, <
.=. >
/=/ ?
fcitx 的码表
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
-
solcomo
- 帖子: 2838
- 注册时间: 2007-04-25 13:12
#15
帖子
由 solcomo » 2008-07-02 18:28
大蛇不是让我一个一个替换吧
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖
☠☯⚔☣☦☃
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS