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

資訊專(zhuān)欄INFORMATION COLUMN

awk在刪除鏡像過(guò)程中的用法及說(shuō)明

lentoo / 2385人閱讀

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

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

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

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

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

這條語(yǔ)句又可以看作兩步操作:

docker images:查詢(xún)本地鏡像列表;

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

為了方便理解,這里再簡(jiǎn)化下語(yǔ)句:

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

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

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

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

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

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

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

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

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

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

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

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

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

# 查詢(xún)本地鏡像的ID列表
docker images -q

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

組合之后就成了

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

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

# 查看命令的幫助信息
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

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

參考文獻(xiàn):

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

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

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

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

相關(guān)文章

  • awk刪除docker歷史鏡像

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

    lentoo 評(píng)論0 收藏0
  • dockercentos安裝golang操作部分理解

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

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

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

    pubdreamcc 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<