zoukankan      html  css  js  c++  java
  • shell 复习笔记

    http://man.linuxde.net/awk 参考

    -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
    循环判断类
    -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

    for((i=1;i<=10;i++));
    do
    echo $(expr $i * 3 + 1);
    done

    条件 双括号 用分号分开,分别是 初始值;范围;变化 for do done


    if [ -f "$FILE" ];then
    echo "OK"
    else
    echo "error $FILE" > error.log
    mail -s "$FILE backup fail" test123@jb51.net <error.log
    fi

    开头结尾 用if --- fi 条件后; if ;then else fi

    while [ "$var" != "by" ]

    do

    echo "you input a char $var "

    read var

    done


    -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
    命令类
    -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
    sort -t : -n -k 1 new.txt (-t 分隔符 -n 以纯数字 -k 第几个域 -u 去重 -r 逆排序,-f 忽略字母大小写 -o file)
    1:hello
    2:hehe
    8:exit
    10:haha
    11:nihao
    12:hello

    cut -d' ' -f 1 filename (-d 分隔符 -f 第几个域 -c 字符 -b 字节 utf-8 3个字节一个汉字)


    sed -n "1p" file (-n p搭档使用 显示第几行 a下一行增加 i 上一行加 s 替换 "s/^s/title/g" d 删除)


    date -d "19700102 08:00:00" +%Y-%m-%d:%H:%M:%S
    1970-01-02:08:00:00
    date -s "20171111 11:02:00"


    uniq [ -c | -d | -u ] [ -f Fields ] [ -s Characters ] [ -Fields ] [ +Characters ] [ InFile [ OutFile ] ]

    -c 在输出行前面加上每行在输入文件中出现的次数。
    -d 仅显示重复行。
    -u 仅显示不重复的行。
    -f Fields 忽略由 Fields 变量指定的字段数目。
    -s Characters 忽略由 Characters 变量指定的字符的数目
    cut -d':' -f 2 new.txt |sort -r |uniq -c -d
    2 nihao
    2 hello
    2 hehe

    -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
    正则类
    -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
    基础的 * , <> , {n,m} ,扩展的+, ?, 都是其前面的字符重复次数 《<<<重点《<<<<

    #例子 new.txt
    12:hello
    2:hehe
    10:haha
    11:nihao
    1:hello
    20:nihao
    19:hehe
    8:exit
    23.bay

    $grep -e '^[1-9]:.*[t]$' new.txt <<<<<例子<<<<
    8:exit
    grep -e "<ni>" new.txt <<<<<例子<<<< <ni> 要完整的词!!!
    结果找不到
    $ sed 's/ni/*/g' new.txt |grep -e '<hao>' <<<<<例子<<<< 单词前面是*这样可以
    11:*hao
    20:*hao

    $sed "s/[:.]/+/g" new.txt <<<<<例子<<<<
    12+hello
    2+hehe
    .....
    23+bay

    $ sed "s/[l]{2}/**/g" new.txt <<<<<例子<<<<
    12:he**o
    2:hehe
    $ sed 's/ni/*/g' new.txt <<<<<例子<<<<
    ...
    11:*hao
    ...

    $ awk -F[:] '{ print $1,' ',$2 }' new.txt |$awk -F: '{ print $1" "$2 }' new.txt <<<例子的区别<<<<<<
    12 hello |12 hello
    2 hehe |2 hehe
    .... |....

    cat /etc/passwd |awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "blue,/bin/nosh"}'
    awk -F: '/root/{print $7}' /etc/passwd
    awk '/root/' /etc/passwd == grep -e 'root' /etc/passwd

    $awk -f awk.sc new.txt
    #awk.sc
    BEGIN{ FS=":";OFS="-";print "begin";count=0 } #开始执行,count 为计数器
    { print count" "$0;count=count+1 } #执行中,如果print “”语句跟; 那么会分行打印。没读一行,count会加1
    END { print "end";print "lines="count } #执行完后,计数器打印出来。

    $ awk 'BEGIN { a=5;print sin(a),cos(a),log(a),a^2,a++,a*2,sqrt(5),a+=1,a%2,rand() }'<<<<<<<例子<<<<<<数学运算!!
    -0.958924 0.283662 1.60944 25 5 12 2.23607 7 1 0.237788(同一条执行的话随机数固定)

    awk 中的数组
    关键字有 length()数组长度 asort() 排序 split()分割
    数组不用初始不用赋值
    ++S['name'] 可以做为分类计数 有一个name域 记录一次

    $ awk -F[:.] '{++S[$2]}END {for(i in S) print i,S[i]}' new.txt <<<<<例子<<<<
    exit 1
    nihao 2
    bay 1
    hehe 2
    haha 1
    hello 2


    sort cut awk 的域符号!!!!
    sort -t':' -k 1
    cut -d':' -f 1
    awk -F[:.] { print $1 } <<<<<例子<<<< [正则 : 或 .] 如果用‘’ 不支持 sort或cut也不支持

  • 相关阅读:
    Windows程序设计03:创建窗口类
    Android学习笔记19:ImageView实现图片适屏与裁剪
    设计模式01:统一建模语言UML基础知识
    串口通信与编程01:串口基础知识
    Windows程序设计01:在VS2008上新建Windows应用程序项目
    设计模式02:面向对象设计原则
    Windows程序设计02:永恒的Hello World
    Android学习笔记20:Http协议及Java Web编程
    Android学习笔记18:自定义Seekbar拖动条式样
    从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响
  • 原文地址:https://www.cnblogs.com/if-then/p/7820066.html
Copyright © 2011-2022 走看看