• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-159  評(píng)論-223  文章-30  trackbacks-0
               由于從其它平臺(tái)如windows傳輸文件到類unix平臺(tái)時(shí),用vim等編輯工具打開時(shí),有時(shí)會(huì)發(fā)現(xiàn)行尾有^M,其實(shí)這就是控制字符CR,ASCII碼為13。為方便刪除這個(gè)字符,編寫了一個(gè)簡單的dos2unix腳本,最多帶2個(gè)參數(shù),特點(diǎn)如下:
               ● 第1個(gè)參數(shù)表示目標(biāo)文件或目錄,當(dāng)為文件時(shí)則處理非腳本本身的文件,當(dāng)為目錄時(shí)則根據(jù)第2個(gè)參數(shù)是否遞歸處理子目錄。
               ● 第2個(gè)參數(shù)當(dāng)且僅當(dāng)?shù)?個(gè)參數(shù)為目錄時(shí)有效,表示是否遞歸處理子目錄,當(dāng)為空時(shí)則不處理,為-r時(shí)則處理。
             1#! /bin/bash
             2# dos2unix
             3
             4self_name=$(basename "$0")
             5self_dir=$(cd "$(dirname "$0")";pwd)
             6
             7transform_file()
             8{
             9    name=$(basename "$1")
            10    dir=$(dirname "$1")
            11
            12    if [ "$dir" = "." ]; then
            13        dir=$(pwd)
            14    fi
            15
            16    if "$dir" != "$self_dir" ] || [ "$name" != "$self_name" ]; then
            17        mv $1 $1.old
            18        sed 's/^M$//g' $1.old > $1
            19        rm $1.old
            20    fi
            21}

            22
            23transform_dir()
            24{
            25    local pdir=$(pwd)
            26    cd $1
            27    
            28    for s in `ls`
            29    do
            30        if [ -f "$s" ]; then
            31           transform_file "$s"
            32        else    
            33           if -"$s" ] && [ "$2" -eq "1" ]; then        
            34               transform_dir "$s" "1"            
            35           fi 
            36        fi            
            37    done                
            38
            39    cd $pdir
            40
            41

            42transform()
            43{
            44    if -"$1" ]; then
            45        transform_file "$1"
            46    else
            47        if -"$2" ]; then
            48            is_r=0
            49        else
            50            if "$2" = "-r" ]; then
            51                is_r=1
            52            else
            53                echo "Usage: $(basename $0) directory -r"
            54                return 1
            55            fi
            56        fi
            57
            58        if -"$1" ]; then
            59            transform_dir "$1" "$is_r"
            60        else
            61            echo "$1 is neither file nor directory"
            62            return 1
            63        fi        
            64    fi
            65}

            66
            67if -"$1" ]; then
            68    transform $1 $2
            69else
            70    echo "Usage: $(basename $0) file or directory [-r]"
            71    exit 1
            72fi
            posted on 2013-08-08 19:06 春秋十二月 閱讀(7647) 評(píng)論(5)  編輯 收藏 引用 所屬分類: System

            評(píng)論:
            # re: shell應(yīng)用(4): 使用sed刪除行尾的^M字符 2013-08-09 09:20 | foyo23
            這種情況經(jīng)常碰到. 有用.  回復(fù)  更多評(píng)論
              
            # re: shell應(yīng)用(4): 使用sed刪除行尾的^M字符 2013-09-03 20:58 | suwenqiang
            直接使用vi的替換功能,更簡單點(diǎn)
            :1,$s/^M//g  回復(fù)  更多評(píng)論
              
            # re: shell應(yīng)用(4): 使用sed刪除行尾的^M字符 2013-09-03 21:22 | 春秋十二月
            @suwenqiang
            vi需要先打開文件才行,既不方便,也不通用。  回復(fù)  更多評(píng)論
              
            # re: shell應(yīng)用(4): 使用sed刪除行尾的^M字符 2014-11-05 11:17 | felix
            樓主試過了嗎?我這沒成功  回復(fù)  更多評(píng)論
              
            # re: shell應(yīng)用(4): 使用sed刪除行尾的^M字符 2015-05-20 16:06 | 春秋十二月
            @felix
            bug已修正  回復(fù)  更多評(píng)論
              
            漂亮人妻被黑人久久精品| 国产精品欧美亚洲韩国日本久久| 久久人人添人人爽添人人片牛牛| 久久精品国产免费观看| 99久久精品费精品国产一区二区| 97超级碰碰碰碰久久久久| 久久综合色区| 51久久夜色精品国产| 久久久久久久久久久精品尤物| 久久精品99久久香蕉国产色戒| 久久精品女人天堂AV麻| 超级碰碰碰碰97久久久久| 青青青国产成人久久111网站| 亚洲精品无码久久毛片| 久久精品一区二区国产| 久久人人爽人人爽人人片av麻烦 | 久久99精品久久久久久9蜜桃| 亚洲精品tv久久久久久久久| 久久久艹| 国产69精品久久久久99| 久久久久久无码Av成人影院| 国产成年无码久久久免费| 久久精品二区| 久久久黄片| 成人午夜精品久久久久久久小说| 久久精品国产亚洲AV高清热| 日韩欧美亚洲综合久久| 日本高清无卡码一区二区久久| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 日批日出水久久亚洲精品tv| 色综合久久中文色婷婷| 国产国产成人精品久久| 久久国产精品无码一区二区三区 | 91亚洲国产成人久久精品| 久久综合噜噜激激的五月天| 一本色道久久88—综合亚洲精品| 亚洲精品NV久久久久久久久久| 久久综合九色综合久99| 亚洲国产成人久久一区久久| 久久久国产视频| 亚洲AV成人无码久久精品老人 |