shell脚本的哪些淫荡技巧

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/epeaktop/article/details/81064431
  • 计算浮点数,和c++一样可以控制两位小数
echo ""|awk -F' ' '{printf("%.2f\n", 100*(21+100)/333)}'
  • map使用范例
declare -A map=()



awk -F'|' '{printf("%s,%s,%s\n",$3,$7,$12)}' levelup.txt > 5.txt

list=`cat 5.txt`
for i in $list
do
        uid=`expr match $i '\(.*\),.*,.*'`
        roleId=`expr match $i '.*,\(.*\),.*'`
        level=`expr match $i '.*,.*,\(.*\)'`
    # uid=`echo $i|awk -F, '{print $2}'`
    # uid=${i%,*}
        # uid=${uid#*,}  # 取得角色id
        echo $uid" , "$roleId" , "$level

        a=map[${uid}]
        if [ $a -lt $level ]; then
                map[${uid}]=${level};
        fi

done

for key in ${!map[@]}
do
    echo "${key},"${map[$key]}
done

  • 同时在file1和file2中的行
awk '{if(ARGIND==1) {val[$0]}else{if($0 in val) print $0}}' file1 file2
  • 只在file1中有的行.
awk '{if(ARGIND==1) {val[$0]}else{if($0 in val)  delete val[$0]}}END{for(i in val) print i}' file1 file2
  • 其实也可以这样:
awk 'ARGIND==1{a[$0]}ARGIND>1&&!($0 in a){print $0}' file1 file2
  • 只在file2中有的行.
awk '{if(ARGIND==1) {val[$0]}else{if($0 in val)  delete val[$0]}}END{for(i in val) print i}' file2 file1
awk '{if(NR==FNR){val[$0]}else{if($1 in val) print $0}}' 70029  zhima
awk '{if(NR==FNR){val[$0]=$0}else{if($5 in val) {print $1"\t"$2"\t"$3"\t"$4"\t"$5"\t"$6"\t"$7"\t1"}else{print $1"\t"$2"\t"$3"\t"$4"\t"$5"\t"$6"\t"$7"\t0"}}}'  from data
  • 随机选取文件的行数
shuf -n5  文件名
 function usage()
    {
        cat << EOF
        usage: $0 [options]
    
    
        OPTIONS:
        -s  Build externals from source
        -h  this help
        -d  debug model
    EOF
    }

注意xargs的用法

awk -F' ' '{print $2}' 3.txt | awk -F'.' '{print $1}' |xargs -I {} date -d @{} "+%Y-%m-%d %H:%M:%S"

猜你喜欢

转载自blog.csdn.net/epeaktop/article/details/81064431