<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jasmine214--love

    只有當你的內心總是充滿快樂、美好的愿望和寧靜時,你才能擁有強壯的體魄和明朗、快樂或者寧靜的面容。
    posts - 731, comments - 60, trackbacks - 0, articles - 0

    Shell練習

    Posted on 2011-01-22 10:35 幻海藍夢 閱讀(519) 評論(0)  編輯  收藏 所屬分類: LinuxShell
    1.找出test目錄下小于100k和大于300k的文件
    # !/bin/sh
    ls -l /tmp/test/ |awk '{print $9}' |grep -v ^$ | while read LINE
    do
    size=`ls -l /tmp/test/$LINE |awk '{print $5}'`
    if [ $size -le 100 -o $size -ge 300 ];then
    #mv $LINE /tmp
    echo $LINE
    fi
    done
    或:
    find /tmp -size -100k -o -size +300k -exec ls -l {} \;

    2.找出test目錄下大小在40K-60K之間的文件
    find test -size +40k -a -size -60k -exec ls -l {} \;


    3、在目錄/tmp下找到100個以abc開頭的文件,然后把這些文件的第一行保存到文件new中。
    #!/bin/sh
    cd /tmp
    for i in `find . -type f -name "abc*"| head -n 100`
    do
    head -n1 $i>>new
    done


    4、把文件b中有的,但是文件a中沒有的所有行,保存為文件c,并統計c的行數。
    # !/bin/sh
    for i in `cat b`
    do
    grep $i a                     #將b中的行,在a中查找
    if [ "$?" -gt "0" ];then      #如果結果大于0(即為找不到)
    echo $i>>c                    #將此行輸入到c中
    fi
    done
    統計行數wc -l即可~

    這個不對,但是先保留著吧~
    排除重復的,再用cut,已1為分隔域,打印出第二域到最后一域
    cat b a | sort -n |uniq -c | awk '{if ($1==1) print $0}'|cut -f2- -d "1" | wc -l
    另外 uniq -u就可以打印出不重復的。

    5.實現從1加到100,得出結果:
    一:
    #!/bin/sh

    i=1
    sum=0
    while [ $i -le 100 ]
    do

           sum=`expr $sum + $i`
            i=`expr $i + 1`
    done
    echo $sum

    二:
    i=1
    b=0
    for i in {1..100}
    do
            b=$[$b + $i]
    done
    echo $b

    三:
    # !/bin/sh
    s=0
    for((i=1;i<101;i++));do
    s=`expr $s + $i`
    done
    echo $s

    四:
    # !/bin/sh
    i=1
    num=0
    while [ "$i" != "101" ]
    do
    num=`expr $i + $num`
    i=`expr $i + 1`
    done
    echo $num


    6,文件內容為
    admin: aa@test.com
    body: bb@test.com
    admin: cc@test.com
    把匹配admin 的行后面加上 ;aa@163.com
    sed -r 's/(admin)(.*)/\1\2 ;aa@163.com/g' filename
    admin: aa@test.com ;aa@163.com
    body: bb@test.com
    admin: cc@test.com ;aa@163.com

    -r, --regexp-extended       

    use extended regular expressions in the script.
    -r 使sed在腳本中使用正則表達式
    \1\2即表示前面的(admin)(.*)

    7,文件內容為:
    1 aaa 1000
    2 bbb 1000
    3 aaa 1000
    4 aaa 1000
    5 ccc 1000
    6 bbb 1000
    將其變成:
    1 aaa 3000
    2 bbb 2000
    5 ccc 1000
    腳本:
    # !/bin/sh
    for i in `awk '{print $2}' filename |sort|uniq`
    do
    grep $i filename >$i.txt
    sum=`awk '{tot+=$3}; END{print tot}' $i.txt`
    three=`sed -n '1p' $i.txt |awk '{print $3}'`
    sed -i "s/$three/$sum/g" $i.txt
    head -n1 $i.txt >>last
    rm -f $i.txt
    done

    8,文件內容:
    this
    is
    a
    test
    script
    將其變成:
    this is a test script
    腳本:
    echo `cat filename`

    9,比較字符串大小(主要是用到了sort來比較)
    VAR1=abc
    VAR2=def
    tt=`echo -e "$VAR1\n$VAR2"|sort|head -1`
    if [ "$tt" = "$VAR1" ];then
    echo $VAR1 relatively large!
    else
    echo $VAR2 relatively large!
    fi

    10.合并相同項
    [root@test1 tmp]# more file1
    DAD|15.0|
    JAB|2.0|
    JAH|55.0|
    HAH|11|
    [root@test1 tmp]# more file2
    DAD|773.0|
    GGC|2.0|
    JAB|224.0|
    HOH|22|
    將其合并成:
    DAD     15.0    773.0
    JAB     2.0     224.0
    GGC     2.0
    HOHO    22
    JAH     55.0
    腳本:(感覺寫的有點笨了)
    # !/bin/sh
    cat file1 file2 |awk -F'|' '{print $1}'| sort |uniq -c >tmp

    for i in `awk '{if ($1 >=2) print $2}' tmp`
    do
    echo `cat file1 file2 |grep $i` | awk -F'|' '{print $1"\t"$2"\t"$4}' >>last.txt
    done
    for b in `awk '{if ($1==1) print $2}' tmp`
    do
    echo `cat file1 file2 |grep $b` | sed 's/|/\t/g' >>last.txt
    done
    rm -f tmp
    簡單的:
    join -a 1 -a 2 -t "|" file* |sort -t"|" -rk3 |awk -F'|' '{print $1"\t"$2"\t"$3$4}'


    11,字母分離
    將abcdefghijklmnopqrstuvwxy分離成為:
    abcde
    fghij
    klmno
    pqrst
    uvwxy
    用到sed配合正則表達式:
    sed 's/\(.....\)\(.....\)\(.....\)\(.....\)\(.....\)/\1\n\2\n\3\n\4\n\5/' filename

    12.每隔5秒檢測另一臺服務器上的apache服務,直到其啟動后,echo OK
    # !/bin/sh
    echo | telnet 192.168.2.189 80 >check.txt
    grep -i connected check.txt
    while [ $? -ne 0 ]         #如果上面grep的結果不為0
    do
    echo no
    sleep 5
    echo | telnet 192.168.2.189 80 >check.txt
    grep -i connected check.txt
    done
    echo OK!!!!!!!!!!!

    13.在/tmp/下建0-255目錄,再每個目錄再建0-255個目錄,然后在最下級目錄下面建100個文件
    原來寫的:
    for ((i=0;i<255;i++));do
    mkdir -p $i
    for ((b=0;b<255;b++));do
    mkdir $i/$b
    for ((c=0;c<100;c++));do
    touch $i/$b/$c
    done
    done
    done
    接下來看一個超簡單的:建5個目錄,再每個目錄再建5個目錄,然后在最下級目錄下面建5個文件
    mkdir -p {0..5}/{0..5} && touch {0..5}/{0..5}/{0..5}

    14.記錄sed的一個用法:
    i=1
    sed s/2/$i/g file   不需要寫成 sed 's/2/$i/g' file
    這樣的好處就是可以使用變量了

    原文: http://hi.baidu.com/ggb98/blog/item/eabebfee930fd3ffcf1b3eee.html

    主站蜘蛛池模板: AV无码免费永久在线观看| 91久久精品国产免费一区| 全免费A级毛片免费看网站| 中文字幕亚洲综合小综合在线| 日韩午夜理论免费TV影院| 亚洲一区二区成人| 99精品在线免费观看| 亚洲一区二区三区免费观看| 最近最新MV在线观看免费高清| 亚洲最大成人网色香蕉| 成人黄软件网18免费下载成人黄18免费视频 | 国产jizzjizz免费看jizz| 在线观看亚洲精品专区| 免费二级毛片免费完整视频| 日韩在线视频线视频免费网站| 亚洲高清无码综合性爱视频| 一本到卡二卡三卡免费高| 亚洲色婷婷六月亚洲婷婷6月| 中文字幕乱码一区二区免费| 666精品国产精品亚洲| 动漫黄网站免费永久在线观看| 亚洲夂夂婷婷色拍WW47| 免费A级毛片无码久久版| 成人免费乱码大片A毛片| 精选影视免费在线 | 亚洲gv猛男gv无码男同短文| 69av免费视频| 亚洲AV永久无码天堂影院| 亚洲精品成人久久久| 无码国产精品一区二区免费模式| 亚洲毛片基地日韩毛片基地| 最新69国产成人精品免费视频动漫| 全部一级一级毛片免费看| 亚洲va在线va天堂va四虎| 蜜桃视频在线观看免费网址入口| 疯狂做受xxxx高潮视频免费| 亚洲av综合av一区| 四虎影视www四虎免费| 本免费AV无码专区一区| 77777亚洲午夜久久多喷| 国产精品亚洲二区在线观看|