linux获取待删文件状态,Linux文本处理技巧分享

导读

作为一名

研发人员,几乎每天都要面对文本处理场景。 因此 掌握文本处理套路 并 熟练运用文本处理

,对于 提升工作效率 意义重大。本文以一个实战例子抛砖引玉,介绍如何运用 grep 、 awk 、 sed 、 cut 等

进行文本处理, 以 快速 完成原本很繁琐的操作。

背景

笔者开发机上有很多 Docker 镜像,现在需要删除名为 none 的那些:

$ docker images

ca9824efce1efaa23ae81726c9df10b5.png

如何操作呢?莫非手工一个个删除么?

$ docker image rm f0fa889be9e8

试想,如果有上百个这样的镜像待删,要搞到何年何月!但如何改进呢?

文本过滤

考虑先把名字为 none 的镜像从结果中过滤出来,

grep 命令即可搞定:

$ docker images | grep none

fabb773565eb0495fb6c02a855b48934.png

字段提取

接着,将容器 ID 一列提取出来,这对 awk 来说简直是小儿科:

$ docker images | grep none | awk '{print $3}'

1e7863a719769619fd7c83182d91dda1.png

当然了,通过

cut命令进行 字段切分 也可以得到相同的结果。 由于

cut 只能按单个字符进行切分,而原文本中的空格为多个,因此需要先进行 文本替换 。

文本替换

文本替换是

sed 命令擅长的事,下面将一个或多个空格替换成一个:

$ docker images | grep none | sed 's/  */ /g'

a3f6e7f9cd298eb5a9eea90089f952de.png

文本切分

接下来,使用 cut 命令对结果进行进一步切分并取出第三个字段:

$ docker images | grep none | sed 's/  */ /g' | cut -d ' ' -f 3

7887ecea4a4e334fc8b92b834d2e1acb.png

不错,我们得到与运用

awk 命令相同的结果。

批量删除

接下来,通过

xargs 批量删除镜像:

$ docker images | grep none | awk '{print $3}' | xargs docker image rm

fa64514cd369a92e89e879e795b9fbd2.png

在这个例子中, xargs 最终将执行以下命令:

$ docker image rm f0fa889be9e8 257954316455 99739acbfe7a 52b10754a70c 86878eefdd39

看到没有,所有不想要的镜像都删除干净了,而且只需要进行一次操作:

$ docker images

2cab45464fd082b1e82ca878bf9bee3f.png

下面这个操作也是等价的:

$ docker images | grep none | sed 's/  */ /g' | cut -d ' ' -f 3 | xargs docker image rm

原文来自:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值