最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux Shell循環(huán)中實(shí)現(xiàn)展示進(jìn)度百分比的實(shí)現(xiàn)方法

 更新時(shí)間:2017年08月03日 09:44:32   作者:FungLeo  
這篇文章主要介紹了Linux Shell循環(huán)中實(shí)現(xiàn)展示進(jìn)度百分比的實(shí)現(xiàn)方法的相關(guān)資料,這里提供實(shí)現(xiàn)方法及實(shí)例,需要的朋友可以參考下

Shell 循環(huán)中實(shí)現(xiàn)展示進(jìn)度百分比的腳本方法

當(dāng)我需要處理一個(gè)幾萬行的文件的時(shí)候,需要處理的時(shí)間是比較長(zhǎng)的。我一開始的想法是,沒處理一行,就輸出一個(gè) # 號(hào)。但是這樣還是會(huì)出現(xiàn)很多很多的 # 號(hào),即便是放在一行,也是非常不優(yōu)雅的。所以,我想實(shí)現(xiàn)一個(gè)展示進(jìn)度百分比的腳本。

實(shí)現(xiàn)思路

  • 獲取文件的行數(shù)
  • 用 i++ 實(shí)現(xiàn)每行處理的計(jì)數(shù)
  • 當(dāng)前處理行數(shù)*100再除以文件行數(shù)+%得到我要輸出的百分比結(jié)果
  • 我需要在一行展示,而不是一直追加或者每次都顯示一行

就是這些需求了。我們來逐漸實(shí)現(xiàn)。

獲取文件的行數(shù)

這個(gè)比較簡(jiǎn)單,用 wc -l $file 就能獲取到了。但是得到的結(jié)果我不是很滿意:

   999 3.log

在結(jié)果的前面有幾個(gè)空格,我得把空格去掉,于是代碼就改成了

wc -l $file | sed 's/^[ \t]*//g'

這樣就去掉了開頭的空格,然后用空格分割,取第一個(gè)就可以了,cut來實(shí)現(xiàn)

wc -l $file | sed 's/^[ \t]*//g' | cut -d ' ' -f1

OK,通過幾個(gè)命令的組合,很容易的實(shí)現(xiàn)了獲取行數(shù)的數(shù)字。

echo 實(shí)現(xiàn)單行顯示

echo -en '\b\b\b\b'

如上,就是將光標(biāo)提前四個(gè)位置,并錄入內(nèi)容。\b是提前一個(gè),輸入幾個(gè)就幾個(gè),如果已經(jīng)到了開頭了,就不能往前挪了,所以,多輸入幾個(gè)是沒問題的。

最終實(shí)現(xiàn)代碼如下:

# 定義變量 i
i=1

# 獲取 3.log 這個(gè)文件的行數(shù),并把運(yùn)行結(jié)果賦予變量 l
l=$(wc -l 3.log | sed 's/^[ \t]*//g' | cut -d ' ' -f1)

# 每行遍歷循環(huán)
while read line; do

 # 輸出百分比
 echo -en "\b\b\b\b"`echo $i*100/$l | bc `'%'

 # 計(jì)算 i++
 ((i++))

# 傳入 3.log 這個(gè)要處理的文件
done < 3.log
# 完成時(shí)打個(gè)OK,因?yàn)樽址L(zhǎng)度不足以遮蓋原先的百分比,所以后面加了幾個(gè)空格
echo -e '\b\b\b\bOK   '

實(shí)現(xiàn)效果如下

好,通過簡(jiǎn)單的幾行代碼,就實(shí)現(xiàn)了我想要的效果了。

以上腳本均在 mac 下測(cè)試通過,在 Linux 下可能會(huì)有稍許不同。

如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • shell腳本發(fā)送http請(qǐng)求的實(shí)現(xiàn)示例

    shell腳本發(fā)送http請(qǐng)求的實(shí)現(xiàn)示例

    本文主要介紹了shell腳本發(fā)送http請(qǐng)求的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • linux bash字符串處理大全

    linux bash字符串處理大全

    linux bash字符串處理大全,需要的朋友可以參考下
    2013-02-02
  • awk命令、awk編程語(yǔ)言詳細(xì)介紹和實(shí)例

    awk命令、awk編程語(yǔ)言詳細(xì)介紹和實(shí)例

    這篇文章主要介紹了awk命令、awk編程語(yǔ)言詳細(xì)介紹和實(shí)例,講解了如awk中的記錄、域、分割符,awk的內(nèi)建變量和運(yùn)算符等,需要的朋友可以參考下
    2014-07-07
  • shell腳本多實(shí)例部署nginx的詳細(xì)教程

    shell腳本多實(shí)例部署nginx的詳細(xì)教程

    周一今天給大家分享shell腳本多實(shí)例部署nginx的詳細(xì)教程,文章通過實(shí)例代碼腳本給大家詳細(xì)介紹,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-10-10
  • shell中set指令的用法詳解

    shell中set指令的用法詳解

    這篇文章主要介紹了shell中set指令的用法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • scp命令詳解(全)

    scp命令詳解(全)

    這篇文章主要介紹了scp命令,scp如何做遠(yuǎn)程拷貝,下面小編幫助大家解決有關(guān)scp命令相關(guān)知識(shí),需要的朋友可以參考下
    2015-08-08
  • 非常實(shí)用的23個(gè)Shell腳本實(shí)例

    非常實(shí)用的23個(gè)Shell腳本實(shí)例

    為大家整理了23個(gè)實(shí)例,通過23個(gè)實(shí)戰(zhàn)經(jīng)典腳本實(shí)例,可以拿來就用,根據(jù)大家的需求可以直接使用,為大家整理了23個(gè)實(shí)例,希望此文章對(duì)各位有所幫助
    2021-06-06
  • Linux中查看服務(wù)器內(nèi)存/CPU/網(wǎng)絡(luò)占用情況的命令

    Linux中查看服務(wù)器內(nèi)存/CPU/網(wǎng)絡(luò)占用情況的命令

    這篇文章主要為大家整理了一些Linux中查看服務(wù)器內(nèi)存、CPU和網(wǎng)絡(luò)占用情況的命令,文中的示例代碼簡(jiǎn)潔易懂,需要的小伙伴可以參考一下
    2023-08-08
  • shell腳本編寫ping包及arp的監(jiān)控并發(fā)送短信功能

    shell腳本編寫ping包及arp的監(jiān)控并發(fā)送短信功能

    這篇文章主要介紹了shell腳本編寫ping包及arp的監(jiān)控并發(fā)送短信功能,需要的朋友可以參考下
    2017-03-03
  • shell編程之實(shí)現(xiàn)windows回收站功能分享

    shell編程之實(shí)現(xiàn)windows回收站功能分享

    這篇文章主要介紹了使用trash命令替代linux rm命令實(shí)現(xiàn)windows回收站的功能,需要的朋友可以參考下
    2014-03-03

最新評(píng)論

长垣县| 浦县| 交口县| 马山县| 玉环县| 南雄市| 济源市| 教育| 武功县| 清苑县| 凉城县| 青铜峡市| 辛集市| 邛崃市| 东辽县| 临颍县| 农安县| 松溪县| 旬阳县| 河间市| 中方县| 镇远县| 临夏县| 凌海市| 常州市| 吉林市| 剑川县| 武鸣县| 阿勒泰市| 沙雅县| 平顶山市| 舞阳县| 兴安县| 崇文区| 巴青县| 奉化市| 宜兰市| 乐东| 贞丰县| 太仆寺旗| 张北县|