国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

awk在刪除鏡像過程中的用法及說明

lentoo / 2382人閱讀

摘要:實際上,認(rèn)為文本文件都是結(jié)構(gòu)化的,它將每一個輸入行定義為一個記錄,行中的每個字符串定義為一個域段,域和域之間使用分割符分割。

看到一篇“Docker 技巧:刪除 Docker 容器和鏡像”其中提到刪除標(biāo)簽為none的鏡像的方法,其中用到了awk,就去查了下,下面舉例說明:

docker rmi $(docker images | awk "$1 == "" && $2 == "" {print $3}")

很多挺長的指令不明白的時候可以拆成短的去學(xué)習(xí)了解,這里 “$()” 中的語句可以單摘出來:

docker images | awk "$1 == "" && $2 == "" {print $3}"

這條語句又可以看作兩步操作:

docker images:查詢本地鏡像列表;

awk:文本分析工具,這里的 “"$1 == "" && $2 == "" {print $3}"” 是它的判斷條件和具體操作;

為了方便理解,這里再簡化下語句:

docker images | awk "{print $0}"
# 返回結(jié)果:
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
mono/jexus              6.24                1972cdc31613        4 days ago          727.9 MB

然后將結(jié)果與下面的兩個語句進(jìn)行對比

docker images | awk "{print $1}"
# 返回結(jié)果:
REPOSITORY
mono/jexus

docker images | awk "{print $3}"
# 返回結(jié)果:
IMAGE
1972cdc31613

不難看出 “$” 后的參數(shù)分別對應(yīng)的結(jié)果是有規(guī)律的。實際上,awk認(rèn)為文本文件都是結(jié)構(gòu)化的,它將每一個輸入行定義為一個記錄,行中的每個字符串定義為一個域(段),域和域之間使用分割符分割。awk會把每行進(jìn)行一個拆分,用相應(yīng)的命令對拆分出來的“段”進(jìn)行處理。

行工作模式,讀入文件的每一行,會把一行的內(nèi)容,存到$0里;

使用內(nèi)置的變量FS(段的分隔符,默認(rèn)用的是空白字符),分割這一行,把分割出來的每個段存到相應(yīng)的變量$(1-100);

輸出的時候按照內(nèi)置變量OFS(out FS);

讀入下一行繼續(xù)操作;

"$1 == "" && $2 == "" {print $3}"中的$1 == "" && $2 == ""含義則是每行拆分出的第一個字段和第二字段均為 “”,那么就執(zhí)行{print $3},即輸出該行記錄中的鏡像ID。我們這里是要刪除名稱和標(biāo)簽均為none的鏡像,那么只能通過docker rmi ImageID來刪除鏡像,所以最后無需輸出整行記錄,只需輸出鏡像的id即可,而鏡像id處在一行記錄拆分后的第三個,即$3,所以這里用{print $3}即可。然后組合起來就是:

docker rmi $(docker images | awk "$1 == "" && $2 == "" {print $3}")

通過awk可以得到想要的文本,再與docker的其他命令組合可以實現(xiàn)很多有意思的功能,關(guān)于awk更多的信息請參考《Shell腳本之a(chǎn)wk詳解》,這里是備份。關(guān)于Docker的相關(guān)指令可以參照《Docker的學(xué)習(xí)--命令使用詳解》,里面有詳盡的注釋。

另外,如果需要幾個命令組合就可以用$()將命令嵌套起來,如:

# 查詢本地鏡像的ID列表
docker images -q

# 根據(jù)鏡像的ID或鏡像的名稱 + 標(biāo)簽刪除鏡像
docker rmi ImageID

組合之后就成了

# 刪除所有的鏡像
docker rmi $(docker images -q)

同樣的,你可以根據(jù)自己的情況將其他的命令進(jìn)行組合,同時用awk對文本進(jìn)行處理可以實現(xiàn)更多有意思的功能。還有就是如果對docker的命令不熟悉的話

# 查看命令的幫助信息
docker COMMAND --help
# 例如:
docker rmi --help
# 返回結(jié)果
Usage:  docker rmi [OPTIONS] IMAGE [IMAGE...]

Remove one or more images

  -f, --force        Force removal of the image
  --help             Print usage
  --no-prune         Do not delete untagged parents

這里沒辦法列全所有的用法,也沒必要,如果你自己掌握用法既可以記得牢,也可以自己組合出自己需要的命令。

參考文獻(xiàn):

Shell腳本之a(chǎn)wk詳解;

Docker的學(xué)習(xí)--命令使用詳解;

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/26649.html

相關(guān)文章

  • awk刪除docker歷史鏡像

    摘要:初步列了以下方案用實現(xiàn)擅長,通過重定向?qū)⒌妮敵鰝鹘o,處理完后執(zhí)行系統(tǒng)命令清除鏡像。對鏡像列表進(jìn)行去重操作可以以鏡像名稱為進(jìn)行去重獲取歷史鏡像要保留最近個鏡像清除歷史鏡像,其實就是保留數(shù)據(jù)前行,有個內(nèi)置變量保存當(dāng)前處理行編號。 背景 雖然對awk早有耳聞,據(jù)說是個很強(qiáng)大的工具,但一直沒機(jī)會去了解和使用,最近碰到一個需求,用awk輕松解決,才真正一窺它的厲害。需求是這樣的,應(yīng)用每次升級都會...

    lentoo 評論0 收藏0
  • dockercentos安裝golang操作部分理解

    摘要:前兩天在本地安裝了,熟悉了下命令之后,還是忍不住到上進(jìn)行了一波鏡像部署,以下是我的操作步驟和一些想法。但是如果想要將當(dāng)前目錄的文件復(fù)制進(jìn)里頭,首先要保證鏡像在運(yùn)行,然后命令中的容器名使用我圈出來的那個名字。 前兩天在本地安裝了docker,熟悉了下命令之后,還是忍不住到centos上進(jìn)行了一波golang鏡像部署,以下是我的操作步驟和一些想法。準(zhǔn)備:一臺安裝了docker的可聯(lián)網(wǎng)的ce...

    huaixiaoz 評論0 收藏0
  • 命令總結(jié)

    摘要:博文參考命令預(yù)覽基礎(chǔ)命令文本搜索權(quán)限管理文件搜索幫助命令用戶管理壓縮解壓網(wǎng)絡(luò)配置關(guān)機(jī)重啟常用命令系統(tǒng)信息顯示機(jī)器的處理器架構(gòu)顯示正在使用的內(nèi)核版本顯示的信息校驗內(nèi)存使用顯示哪些被使用顯示內(nèi)核的版本顯示網(wǎng)絡(luò)適配器及統(tǒng)計顯示已加載的文件系統(tǒng) 博文參考 http://www.178linux.com/78199 http://www.cnblogs.com/suliuer/p/5448747...

    pubdreamcc 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<