Linux中常用的文本处理技巧

作为一名 Linux 研发人员,几乎每天都要面对文本处理场景。 因此 掌握文本处理套路 并 熟练运用文本处理命令 ,对于 提升工作效率 意义重大。本文以一个实战例子抛砖引玉,介绍如何运用 grep 、 awk 、 sed 、 cut 等命令进行文本处理, 以 快速 完成原本很繁琐的操作。

背景

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

$ docker images

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

$ docker image rm f0fa889be9e8

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

文本过滤

考虑先把名字为 none 的镜像从结果中过滤出来, grep 命令即可搞定:

$ docker images | grep none

字段提取

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

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

当然了,通过 cut命令进行 字段切分 也可以得到相同的结果。 由于 cut 只能按单个字符进行切分,而原文本中的空格为多个,因此需要先进行 文本替换 。

文本替换

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

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

文本切分

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

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

不错,我们得到与运用 awk 命令相同的结果。

批量删除

接下来,通过 xargs 批量删除镜像:

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

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

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

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

$ docker images

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

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

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/11179.html

(0)
晴川运维晴川运维
上一篇 2025年7月1日
下一篇 2025年7月1日

相关推荐

  • Go 代码中如何绑定 Host

    Go 代码中如何绑定 Host?本篇重点为大家讲解一下Go 代码绑定 Host具体方法, 有需要的小伙伴可以参考一下。 本文示例: IP:192.168.1.102,也就是说需要访…

    Linux系统 2025年7月5日
  • Linux下使用dd命令克隆硬盘

    dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换,本篇文章为大家演示一下使用dd命令克隆硬盘具体方法。 只拷贝…

    Linux系统 2025年6月8日
  • 简单介绍一下graphql

    graphql 是一种用于 API 的查询语言,对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,减少数据的冗余。 对比 Rest API…

    Linux系统 2025年6月8日
  • 讲解一下C 语言布尔类型

    C语言就没有真正的布尔类型,布尔类型实际上是用数值型(int,float,char等)表示的,不能自动打印为true或者false,只能自己写代码实现。 C 语言标准(C89) 没…

    Linux系统 2025年6月8日
  • Linux 系统中修复 SambaCry 漏洞(CVE-2017-7494)

    Samba 很久以来一直是为 *nix 系统上的 Windows 客户端提供共享文件和打印服务的标准。家庭用户,中型企业和大型公司都在使用它,它作为最佳解决方案在多种操作系统共存的…

    Linux系统 2025年7月2日
  • Linux中常用的监控工具

    本篇文章重点为大家讲解一下Linux中常用的监控工具,有需要的小伙伴可以参考一下。 1. iotop 如果你想知道某些进程使用了多少你宝贵的 I/O 资源,那么就使用 iotop …

    Linux系统 2025年6月11日
  • 详解awk使用实例

    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片…

    Linux系统 2025年10月7日
  • Linux下开放指定端口号

    linux系统中控制端口的开启与关闭可以由命令来执行,本篇文章为大家详细讲解一下Linux下开放端口方法。 方式一 CentOS: 1、开启防火墙   &nbs…

    Linux系统 2025年7月5日
  • 网络地址转换(NAT)之连接跟踪工具

    这是有关网络地址转换network address translation(NAT)的系列文章中的第二篇。之前的第一篇文章介绍了 如何使用 iptables/nftabl…

    Linux系统 2025年10月24日
  • Linux下结束进程常用方法

    您是否遇到过当您使用该应用程序时,它突然变得无法响应并意外崩溃。当您再次尝试启动该应用程序时,但由没有任何反应,这是因为原来的应用程序进程不会完全关闭,因此无法再次启动该应用那么怎…

    Linux系统 2025年10月18日

发表回复

登录后才能评论