@orangleliu
2015-05-19T03:15:48.000000Z
字数 1248
阅读 1824
shell
把平时用到的shell编程总结到一起, 印象中的使用基本就是print,split,正则,并不是很熟悉
liuzhizhi@lzz-rmbp|awk # cat basesplit.txtxiaoming 20 appleorangleliu 50 bookxiaoniu 23 pcliuzhizhi@lzz-rmbp|awk # cat basesplit.txt|awk '{print $2,$1}'20 xiaoming50 orangleliu23 xiaoniu
awk 默认是空格切分列的,print可以打印出对应的列,$1,$2...代表切分后的列,从1开始,$0, 代表一整行。
下面的例子演示下使用其他分隔符的情况,主要使用了 -F 参数,后面跟着自定义的分隔符。
liuzhizhi@lzz-rmbp|awk # cat basesplit.txtxiaoming,20, appleorangleliu,50, bookxiaoniu,23, pcliuzhizhi@lzz-rmbp|awk # cat basesplit.txt|awk -F',' '{print $3, $0}'apple xiaoming,20, applebook orangleliu,50, bookpc 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 4278316liuzhizhi@lzz-rmbp|awk # cat awksplit.txt|awk '{split($1 ,g, "/"); split(g[4], m, "?");print m[1],$2}'moca.apk 14315094084053RbtH5x7aQCMprrmoca.apk 14315094084053RbtH5x7aQCMprrmoca.apk 14315094084053RbtH5x7aQCMprr
上面的脚本的主要就是处理第一列的数据,并提取apk文件的名称。
awk '{split($1 ,g, "/"); split(g[4], m, "?");print m[1],$2}', split方法的第一个参数是要分隔的字符串,第二个参数是分割后的数组,我们可以用数组的index得到需要的部分,第三个参数就是分隔符了。 上面的/media/games/moca.apk?key经过两次分割得到了apk文件的名称。