sh/bash/dash/ksh/zsh等Shell脚本
-
思考者
- 帖子: 294
- 注册时间: 2009-07-05 19:43
#1
帖子
由 思考者 » 2011-12-11 10:33
代码: 全选
cloudy@cloudy-laptop:~/tmp$ head -n 16 ddj.txt |tail -n 1
致虚极守静笃万物并作吾以观复夫物芸芸各复归其根归根曰静是谓复命复命曰常知常曰明不知常妄作凶知常容容乃公公乃全全乃天天乃道道乃久没身不殆
然后我把这16章的每一个字与前面15章比较
代码: 全选
cloudy@cloudy-laptop:~/tmp$ head -n 15 ddj.txt |grep -n 虚
3:不尚贤使民不争不贵难得之货使民不为盗不见可欲使民心不乱是以圣人之治虚其心实其腹弱其志强其骨常使民无知无欲使夫智者不敢为也为无为则无不治
5:天地不仁以万物为刍狗圣人不仁以百姓为刍狗天地之间其犹橐迭乎虚而不屈动而愈出多言数穷不如守中
cloudy@cloudy-laptop:~/tmp$ head -n 15 ddj.txt |grep -n 极
cloudy@cloudy-laptop:~/tmp$ head -n 15 ddj.txt |grep -n 守
5:天地不仁以万物为刍狗圣人不仁以百姓为刍狗天地之间其犹橐迭乎虚而不屈动而愈出多言数穷不如守中
9:持而盈之不如其己揣而锐之不可长保金玉满堂莫之能守富贵而骄自遗其咎功遂身退天之道
cloudy@cloudy-laptop:~/tmp$ head -n 15 ddj.txt |grep -n 静
15:古之善为士者微妙玄通深不可识夫唯不可识故强为之容豫兮若冬涉川犹兮若畏四邻俨兮其若容涣兮若冰之将释敦兮其若朴旷兮其若谷混兮其若浊澹兮其若海兮若无止孰能浊以静之徐清孰能安以动之徐生保此道者不欲盈夫唯不盈故能蔽而新成
就是这样子,只不过只需要行号就行了。另外能够自动循环比较更好,字与字之间的结果要分开。
上次由
思考者 在 2012-01-17 20:53,总共编辑 3 次。
-----寂寞的存在,孤独的思考----
-
ljj_jjl2008
- 论坛版主
- 帖子: 14256
- 注册时间: 2007-09-16 8:29
#2
帖子
由 ljj_jjl2008 » 2011-12-11 10:37
很有挑战性呀!
我的思路是:不要从文本文件里面读了,而是把“道德经”的内容当字符串,直接写进shell中,赋值给几个变量,然后对变量进行操作。
-
sunfish
- 帖子: 989
- 注册时间: 2008-05-03 1:53
#3
帖子
由 sunfish » 2011-12-11 10:49
这个……
支持支持
docker && kubernetes
-
枫叶饭团
- 帖子: 14683
- 注册时间: 2010-06-16 1:05
- 系统: Mac OS X
- 来自: Tencent
-
联系:
#4
帖子
由 枫叶饭团 » 2011-12-11 11:28
我了个去哦,没思路
-
思考者
- 帖子: 294
- 注册时间: 2009-07-05 19:43
#5
帖子
由 思考者 » 2011-12-11 11:30
ljj_jjl2008 写了:很有挑战性呀!
我的思路是:不要从文本文件里面读了,而是把“道德经”的内容当字符串,直接写进shell中,赋值给几个变量,然后对变量进行操作。
每章一个字符串?再搞成数组样的?
-----寂寞的存在,孤独的思考----
-
ljj_jjl2008
- 论坛版主
- 帖子: 14256
- 注册时间: 2007-09-16 8:29
#6
帖子
由 ljj_jjl2008 » 2011-12-11 11:32
思考者 写了:ljj_jjl2008 写了:很有挑战性呀!
我的思路是:不要从文本文件里面读了,而是把“道德经”的内容当字符串,直接写进shell中,赋值给几个变量,然后对变量进行操作。
每章一个字符串?再搞成数组样的?
就是这个意思。不过字符串好像有长度限制,注意不要超长。
-
枫叶饭团
- 帖子: 14683
- 注册时间: 2010-06-16 1:05
- 系统: Mac OS X
- 来自: Tencent
-
联系:
#7
帖子
由 枫叶饭团 » 2011-12-11 11:37
grep好像用处挺大的
-
思考者
- 帖子: 294
- 注册时间: 2009-07-05 19:43
#8
帖子
由 思考者 » 2011-12-11 12:29
枫叶饭团 写了:grep好像用处挺大的
是哦,不过grep啥?要循环比较,都得单字赋值
-----寂寞的存在,孤独的思考----
-
枫叶饭团
- 帖子: 14683
- 注册时间: 2010-06-16 1:05
- 系统: Mac OS X
- 来自: Tencent
-
联系:
#9
帖子
由 枫叶饭团 » 2011-12-11 12:34
挨着一个字一个字的赋值,然后给grep当参数。。。这样子感觉要简单些
-
思考者
- 帖子: 294
- 注册时间: 2009-07-05 19:43
#10
帖子
由 思考者 » 2011-12-11 13:03
枫叶饭团 写了:挨着一个字一个字的赋值,然后给grep当参数。。。这样子感觉要简单些
应该还有3000多4000个字左右,可以grep "$char"这种?
-----寂寞的存在,孤独的思考----
-
枫叶饭团
- 帖子: 14683
- 注册时间: 2010-06-16 1:05
- 系统: Mac OS X
- 来自: Tencent
-
联系:
#11
帖子
由 枫叶饭团 » 2011-12-11 14:39
思考者 写了:枫叶饭团 写了:挨着一个字一个字的赋值,然后给grep当参数。。。这样子感觉要简单些
应该还有3000多4000个字左右,可以grep "$char"这种?
用管道传。。
-
jarlyyn
- 帖子: 4671
- 注册时间: 2006-04-12 18:54
-
联系:
#12
帖子
由 jarlyyn » 2011-12-11 14:41
用python把
shell不擅长干这个。
这个给任何一个有字典或者hash的语言都很容易搞定。
-
思考者
- 帖子: 294
- 注册时间: 2009-07-05 19:43
#13
帖子
由 思考者 » 2011-12-11 19:08
jarlyyn 写了:用python把
shell不擅长干这个。
这个给任何一个有字典或者hash的语言都很容易搞定。

不会阿~~这不求助帮忙么
-----寂寞的存在,孤独的思考----
-
fnan
- 帖子: 919
- 注册时间: 2009-07-01 22:04
#14
帖子
由 fnan » 2011-12-11 20:03
难得见到难题,用什么都行,我先看看,支持搞学术。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
-
fnan
- 帖子: 919
- 注册时间: 2009-07-01 22:04
#15
帖子
由 fnan » 2011-12-11 20:16
实际上是简单的事情,不过就一个txt文件吧,怎样分辨16章15章的,只有一行一行而已,还是说任何地方找到任何相同的字标出来?(与贴出来的古字比较就不会了,看不懂古字)
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。