良玉的博客 点点滴滴,积水成河_良玉的博客_页游、手游linux运维工程师之路

shell字符串分割成数组

root@localhost:~/xly# vim 1#!/bin/bashstring="hello abc,shell,haha"OLD_IFS="$IFS"IFS=","array=($string)IFS="$OLD_IFS"for var in ${array[@]}doecho $vardoneecho $string | awk '{split($0,arr,",");for

阅读全文...

linux下awk数组操作(小结)

用awk进行文本处理,少不了就是它的数组处理。那么awk数组有那些特点,一般常见运算又会怎么样呢。我们先看下下面的一些介绍,结合例子我们会讲解下它的不同之处。在 awk 中数组叫做关联数组(associative arrays),因为下标记可以是数也可以是串。awk 中的数组不必提前声明,也不必声明大小。数组元素用 0 或空串来初始化,这根据上下文而定。例如:

阅读全文...

shell计算美国数学家维纳的年龄

美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。
    一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:
    “我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”


阅读全文...

sed按条件多行合并为一行

其实就是一个多行合并为一行的问题, 仔细看看, 可以理解为当读取到lib关键字的时候倒序排列成一行, 这里我们利用G这个函数, 其目的就是把hold space里的内容追加到当前pattern中, 第一行时G追加hold space里的内容到pattern space后, 中间用'\n'连接, 当时hold space里没有内容, 其实就是添加了一个换行符而已, 然后继续执行命令, 没有匹配到lib关键字, 不执行花括号里的操作, 执行h函数操作, 把当前行的内容(就是第一行的内容后面多加了一个换行符)覆盖到hold space里, 第二行时执行G函数, 这时候pattern space里的内容已经变成了gb=line1\nclone=line1, 这时候也没有匹配到lib, 那么继续执行h, 这样就相当于倒序排列了内容. 执行到第四行, 匹配到lib时候, 我们把所有的换行符替换为空格, 并且打印内容, 执行n操作, 把stream执行到下一行, 用下一行的内容来覆盖hold space里的内容, 这样就相当于清楚了之前hold space里的记录.

阅读全文...