@orangleliu
2015-05-19T11:15:48.000000Z
字数 1248
阅读 1623
shell
把平时用到的shell编程总结到一起, 印象中的使用基本就是print,split,正则,并不是很熟悉
liuzhizhi@lzz-rmbp|awk # cat basesplit.txt
xiaoming 20 apple
orangleliu 50 book
xiaoniu 23 pc
liuzhizhi@lzz-rmbp|awk # cat basesplit.txt|awk '{print $2,$1}'
20 xiaoming
50 orangleliu
23 xiaoniu
awk 默认是空格切分列的,print可以打印出对应的列,$1
,$2
...代表切分后的列,从1开始,$0
, 代表一整行。
下面的例子演示下使用其他分隔符的情况,主要使用了 -F
参数,后面跟着自定义的分隔符。
liuzhizhi@lzz-rmbp|awk # cat basesplit.txt
xiaoming,20, apple
orangleliu,50, book
xiaoniu,23, pc
liuzhizhi@lzz-rmbp|awk # cat basesplit.txt|awk -F',' '{print $3, $0}'
apple xiaoming,20, apple
book orangleliu,50, book
pc xiaoniu,23, pc
现在用的不是很多,用grep 处理习惯了,可能更复杂的脚本会用到
有时候我们会对某一列进行一些简单的字符串处理,从一个有规律的字符串中提取我们需要的信息。
liuzhizhi@lzz-rmbp|awk # cat awksplit.txt
/media/games/moca.apk?key 14315094084053RbtH5x7aQCMprr 4775504
/media/games/moca.apk?key 14315094084053RbtH5x7aQCMprr 4300340
/media/games/moca.apk?key 14315094084053RbtH5x7aQCMprr 4278316
liuzhizhi@lzz-rmbp|awk # cat awksplit.txt|awk '{split($1 ,g, "/"); split(g[4], m, "?");print m[1],$2}'
moca.apk 14315094084053RbtH5x7aQCMprr
moca.apk 14315094084053RbtH5x7aQCMprr
moca.apk 14315094084053RbtH5x7aQCMprr
上面的脚本的主要就是处理第一列的数据,并提取apk文件的名称。
awk '{split($1 ,g, "/"); split(g[4], m, "?");print m[1],$2}'
, split
方法的第一个参数是要分隔的字符串,第二个参数是分割后的数组,我们可以用数组的index得到需要的部分,第三个参数就是分隔符了。 上面的/media/games/moca.apk?key
经过两次分割得到了apk文件的名称。