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)
晴川运维晴川运维
上一篇 1天前
下一篇 1天前

相关推荐

  • Linux中进程通信方法

    每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进…

    Linux系统 2025年6月11日
  • Linux下挂载U盘并访问文件

    挂载 U 盘和挂载光盘的方式是一样的,只不过光盘的设备文件名是固定的(/dev/sr0 或 /dev/cdrom),而 U 盘的设备文件名是在插入 U 盘后系统自动分配的,下面为大…

    Linux系统 2025年6月8日
  • 使用date 和 bash将日期进行倒计时

    需要知道重要事件发生前有多少天吗?让 Linux bash 和 date 命令可以帮助你!随着即将来临的重要假期,你可能需要提醒你还要准备多久。幸运的是,你可以从date 命令获得…

    Linux系统 2025年6月8日
  • 什么是挂载,Linux挂载详解

    前面讲过,linux 系统中“一切皆文件”,所有文件都放置在以根目录为树根的树形目录结构中。在 Linux 看来,任何硬件设备也都是文件,它们各有自己的一套文件系统(文件目录结构)…

    Linux系统 2025年6月22日
  • Linux中使用TCP 封装器加强网络服务安全

    在这篇文章中,我们将会讲述什么是 TCP 封装器TCP wrappers以及如何在一台 Linux 服务器上配置他们来限制网络服务的权限。在开始之前,我们必须澄清 TCP 封装器并…

    Linux系统 2025年6月11日
  • 使用GitHub搭建专属的服务器

    现在固定公网IP资源稀缺,虽然说IPv6已经开始使用,但是用的人并不多,大部分用的都是IPv4,想要搞一个自己网站,首先就是需要一个固定的公网IP,但是每年却需要缴纳不少的mone…

    Linux系统 2025年6月8日
  • Mongodb复制集的安装和部署

    Mongodb复制集由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点,Mongodb Driver(客户端)的所有数据都写入Primary…

    Linux系统 2025年6月22日
  • 详解Spring中AOP

    AOP (Aspect Orient Programming),直译过来就是 面向切面编程。AOP 是一种编程思想,是面向对象编程(OOP)的一种补充。面向对象编程将程序抽象成各个…

    Linux系统 4天前
  • Linux下Bpftrace具体使用方法

    Bpftrace是Linux的新开源跟踪程序,用于分析生产性能问题和故障排除软件。 它的用户和贡献者包括Netflix,Facebook,Red Hat,Shopify等,它是由A…

    Linux系统 2025年6月22日
  • Linux中安装和使用Cpufetch

    Cpufetch是一款功能强大的CPU架构信息获取工具,该工具支持x86、x86_64(Intel和AMD)以及ARM架构的CPU。Cpufetch支持在Linux、Windows…

    Linux系统 2025年6月8日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注