Linux awk重排字段技巧

使用 awk 重排字段

awk 默认以空格或制表符为分隔符,通过 $1, $2, ... 表示字段($0 为整行)。

基本语法

command | awk '{print $3, $1, $2}'  # 输出第3列、第1列、第2列

示例场景

  1. 调整列顺序
    ls -l 输出的权限列(第1列)与文件名列(第9列)互换:

    ls -l | awk '{print $9, $2, $3, $4, $5, $6, $7, $8, $1}'
  2. 选择部分列
    提取 ps aux 的进程ID(第2列)和命令(第11列):

    ps aux | awk '{print $2, $11}'
  3. 自定义分隔符
    若字段以逗号分隔(如CSV文件),用 -F 指定分隔符:

    echo "Alice,30,Engineer" | awk -F ',' '{print $3, $1}'  # 输出:Engineer Alice
  4. 在字段间插入固定文本:

    df -h | awk '{print "分区: " $1, "可用空间: " $4}'

其他工具的组合使用

  1. cut + paste(简单列提取与合并)
    提取第1列和第3列后合并:

    cut -d' ' -f1 file.txt > col1.txt
    cut -d' ' -f3 file.txt > col3.txt
    paste col1.txt col3.txt > result.txt
  2. sed 调整固定格式(不推荐复杂重排)
    仅适用于严格对齐的文本(如交换前两列):

    sed -E 's/(\S+)\s+(\S+)/\2 \1/' file.txt

注意事项

  1. 分隔符处理

    • 默认分隔符为连续空格/制表符,若需保留空格,用 -F 指定明确分隔符(如 -F':')。
    • 含空格的字段(如文件名)需结合 OFS(输出分隔符):
      ls -l | awk 'BEGIN {OFS=" | "} {print $9, $1}'
  2. 表头处理
    若输出含表头(如 ls -l 的首行),用 NR>1 跳过:

    ls -l | awk 'NR>1 {print $9, $1}'
  3. 多命令组合
    复杂场景可串联多个工具(如 awk 过滤后通过 sort 排序):

    ps aux | awk '{print $2, $11}' | sort -n

  • 首选工具awk 是重排字段的最灵活方案,支持自定义分隔符、列选择及格式调整。
  • 适用场景
    • 简单列提取 → cut
    • 动态重排/复杂逻辑 → awk
    • 固定格式微调 → sed
  • 安全提示:操作前用 head 命令测试样本(如 command | head | awk '{...}'),避免误处理大量数据。

引用说明:本文方法基于 GNU Awk 用户指南及 Linux 核心工具手册(AWK 官方文档,POSIX 标准),实践时请确保使用 Bash 4.0+ 或兼容环境。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4640.html

(0)
酷番叔酷番叔
上一篇 2025年6月16日 07:39
下一篇 2025年6月16日 08:33

相关推荐

  • Linux虚拟机如何正确挂载U盘?具体步骤和操作方法是什么?

    在Linux虚拟机中使用U盘是日常工作中常见的操作,无论是文件传输、数据备份还是系统维护,都离不开U盘的挂载,由于Linux系统与Windows系统的文件管理机制不同,新手在挂载U盘时可能会遇到识别失败、权限不足、乱码等问题,本文将详细介绍Linux虚拟机挂载U盘的完整流程,包括虚拟机设置、U盘识别、分区挂载……

    2025年8月30日
    20500
  • Linux教程,如何在系统中正确创建一个新文件?

    Linux作为一款广泛使用的开源操作系统,其文件系统是管理数据的核心,掌握在Linux中创建文件的方法是日常操作和系统管理的基础技能,无论是编写脚本、编辑配置文件还是存储数据,都需要通过不同方式创建文件,本文将详细介绍Linux中创建文件的多种方法,涵盖命令行工具、文本编辑器及脚本实现,帮助用户根据不同场景选择……

    2025年9月22日
    14500
  • img文件有什么秘密?

    .img 文件(磁盘映像文件)本质上是存储设备(如硬盘、USB 驱动器、光盘、软盘)或文件系统的完整扇区级副本,它包含了原始设备的所有数据,包括分区表、文件系统结构以及实际的文件内容,在 Linux 中处理 .img 文件通常涉及将其“挂载”到目录树中以访问其内容,或者使用特定工具提取其中的文件,重要提示:来源……

    2025年6月14日
    20300
  • 如何编译一个属于自己的Linux操作系统?详细步骤与方法

    编译一个属于自己的Linux系统是一个复杂但极具价值的过程,它不仅能让你深入理解Linux系统的底层结构,还能根据需求定制专属功能,以下是详细的步骤指南,涵盖从环境准备到系统优化的全流程,准备工作:工具与环境编译Linux系统需要稳定的硬件环境和必要的工具支持,确保宿主机系统(推荐Ubuntu 22.04或De……

    2025年8月27日
    17500
  • Linux重复上条命令只会用上箭头?

    最常用方法: 命令原理: 会自动替换为历史记录中的上一条命令,操作示例:$ apt update # 首次执行$ sudo !! # 重复执行 → 实际运行 sudo apt update适用场景:需添加权限(如 sudo)或快速重试命令,方向键回溯:(向上键)操作步骤:按键盘 键调出上一条命令按 Enter……

    2025年7月29日
    19300

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信