分类:Shell

Home / 分类:Shell

文本处理按列排序

2016-5-29 22:18:27 | Shell | 没有评论

除了写个脚本,直接通过sort命令也挺快

lihui@MacBook  ~  cat lihui.txt
one     1
ten     10
five    5
four    4
six     6
nine    9
three   3
serven  7
two     2
eight   8

 

按第二列顺序

lihui@MacBook  ~  cat lihui.tx[......]

Read more

Shell实现Key-Value式的哈希散列Map的使用

2015-12-30 00:56:52 | Shell | 没有评论

Shell里并没有内置hash类型,想要实现一种映射关系,可以用一个逼格比较高的玩意declare

具体实现方法

首先声明一下,我这里是声明一个虚拟机UUID到所在物理节点HOST的映射

declare -A UUID_TO_HOST_HASH

然后赋值,也就是填Key-Value对应关系;右边从nova show里取值可以不关注,右边相当于$host

for uuid in ${testi[......]

Read more

shell解析json工具jq

2015-6-15 20:11:17 | Shell | 没有评论

在用curl操作的时候,返回的Content-Type为application/json,输出格式不是嵌套,比较难看,本想全部写在python里处理一下,但一个curl命令四五行,-d里面各种单双引号夹杂,粘贴了之后,要么手动改,要么还要转义,更麻烦,于是乎脑海中闪现了两个字母jq

这玩意是shell里处理json的,当然此刻我的最大目的只是需要美观

debian上直接apt-get进[……]

Read more

Sed各种操作,以及shell脚本变量内插

2015-5-9 19:58:29 | Shell | 没有评论

在写各种script的时候,或者系统命令的时候,总少不了文本处理,天天在各种编程语言之间环绕,有些常用的处理方法还是总结下,以免生疏

LiHui@GodLike ~/work
$ cat lihui.txt
##################################
#number
123
#word
onetwothree
#match
1:one 2:two 3:three
#json[......]

Read more

小郁闷

2015-4-11 00:25:48 | Shell | 没有评论

不知道在想什么,很难么?

$ cat why.sh
#!/bin/bash

for a in `awk -F ':' '{print $2}' test.log`
do
    mkdir $a
done

[……]

Read more

SHELL被忽略的常识

2015-1-9 15:33:26 | Shell | 没有评论

往往被shell奇异的外表和不厌其烦的管道所吸引,拿起来就像直接解决某个问题或者实现某项功能,而一些基本内容容易被忽略

1:交互式程序

python的交互十分简易,命令行输入python就进入了交互模式,十分方便;一般shell要么命令行输入某个命令,要么直接写入到shell脚本文件当中执行,其实假如是测试小段代码,可以将shell脚本以交互的形式写入命令行

[lihui@localhost ~][……]

Read more

Shell里独特的if语句

2014-12-5 15:52:47 | Shell | 没有评论

今天在写分支的时候,一段代码硬是不执行,最后一点点测试才发现居然是if 0居然为真,没有想到会是这个问题,浪费很会时间

#!/bin/bash

if [ “$#” ];
then
    echo “yes”
else
    echo “no”
fi

大概意思就是,这个小例子当中本来是为了判断脚本执行是否携带参数,然后不同的处理,结果不管if里面[……]

Read more

实现BIN包的install以及自动化脚本

2014-12-3 16:23:11 | Shell | 没有评论

从checkout源代码开始,到最终做成一个BIN包,通过两个脚本完成,一个是要集成到BIN里的install.sh脚本(前面有说),关键就是中间写清楚build,install的过程,因为能够截取出源代码的,所以尽量不要放源代码然后编译,而是将二进制放里面,然后进行install,也就是中间最好不要build,而仅仅install,最后将压缩包以及解压的安装程序都删除掉;另一个脚本run_rel[……]

Read more

Linux下SHELL安装包必须注意的

2014-12-2 22:42:07 | Shell | 没有评论

上面那篇是今天打算用一种更好的方法模式来代替目前的RPM机制,但是成熟的RPM有很多种选项参数供你选择,比如是否包含源码包,是否去掉符号表,是否仅仅二进制,而今天做的SHELL脚本做的BIN包目前是携带源代码的,这对于一个需要release出去的软件来说应该是不合格的,

1:install.sh

Linux系统一切皆文件,所以这个脚本实际上是将自身的shell脚本命令和源代码的tar包给拼凑起来了[……]

Read more

Linux类似RPM的SHELL安装包的制作

2014-12-2 21:17:30 | Shell | 没有评论

在linux操作系统中,安装程序rhel系列有rpm,debian系列有deb,很多时候假如想要照顾所有linux系列,仅仅制作rpm是不够的,而且在制作rpm的时候,SPEC的编写是很多人觉得比较蛋疼的事情,所以能否提供一种linux都兼容的安装模式是有必要的,而bash是所有linux都存在的,所以最好的方法是提供一个类shell脚本来实现

其实很多大厂商的产品就是用这种模式,比如可以去VMw[……]

Read more

sed和awk

2014-11-20 01:07:42 | Shell | 没有评论

今天处理个输出结果,为了懒得重新写一个perl脚本,直接敲awk命令输出,敲了老半天都没敲对,着实汗了会

sed

一般用来文本处理,信息替换,内容切割,当然假如你不指定哪行或者哪些行,sed会默认整个文件全文处理

因为它本身就是一个管道命令,通常默认会将结果信息输出在屏幕上,实际上它在处理过程中会将处理的行保存在一个临时缓冲区中,也叫pattern space模式空间,然后处理该行,完成后输出到屏[……]

Read more