vim
编辑
1 2 3 4
| v 选中 j k ctr+d ctr+u ctr+f ctr+b vim -b $fileName(二进制打开文件)可看到^M :%s/\r//g 替换命令替换 u 在命令行模式下是撤销操作
|
替换
|
|
1 2 3 4 5 6 7 8 9 |
9,%s/cur7/cur6/g 从第9行开始替换 :%s/cur7/cur6/g :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky n 为数字,若 n 为 .,表示从当前行开始到最后一行: :n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky :n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky :%s/vivian/sky/(等同于 :g/vivian/s/sky/) 替换每一行的第一个 vivian 为 sky :%s/vivian/sky/g(等同于 :g/vivian/s/sky/g) 替换每一行中所有 vivian 为 sky |
转义:可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
|
|
1 2 |
:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/ :%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/ |
awk
|
|
1 2 3 4 |
awk [-F field-separator] 'commands' input-file(s) 其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。 通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。 |
以 ‘,’ 为分隔符,统计$3的计数数据:
|
|
1 |
``` awk -F ‘,’ ‘{arr[$3]+=1}END{for(i in arr)print i,arr[i]}’ temp1 |
计算最大最小平均值:
|
|
1 2 3 4 5 |
awk '{arr[$1]++}END{for(i in arr) { if(arr[i]>=50) print i,arr[i]; fi}}' awk '{sum+=$1} END {print "Sum = ", sum}' awk '{sum+=$1} END {print "Average = ", sum/NR}' awk 'BEGIN {max = 0} {if ($1>max) max=$1 fi} END {print "Max=", max}' awk 'BEGIN {min = 1999999} {if ($1<min) min=$1 fi} END {print "Min=", min}' |
执行sql
|
|
1 2 3 4 5 6 |
db_r="mysql -h $dbhost -udev -$pwd -e" ret=`$db_r"$sql" --skip-column-name` for id in $ret do echo $id done |
函数
|
|
1 2 3 4 5 |
function f(){ echo a } f 0 CLICK today_click_c=$? |
函数返回值在调用该函数后通过$? 来获得。
注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。调用函数仅使用其函数名即可。
if
判断文件是否存在
|
|
1 2 3 |
if [ ! -f "$PATH" ];then rm /home/jun.yu/earningMoney/d1/*$delday* fi |
|
|
1 2 3 |
``` if [ `ls -l $path*/ |
判断字符串是否为空
|
|
1 2 3 |
if [ ! -z "$PATH" ];then PATH="/home/jun.yu/earningMoney/d1/*$delday*" fi |
循环
|
|
1 2 3 4 |
for i in $(seq 0 3) do echo "adsource:"$i done |