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混合硬盘如何分区?

    在Linux系统中对混合硬盘(通常指SSD+HDD组合,或自带SSD缓存的机械硬盘)进行分区,核心原则是“高速部件优先处理高频访问数据”,以最大化性能与存储空间的平衡,以下是具体分区思路与操作步骤,混合硬盘类型与分区策略差异混合硬盘主要分为两类:SSHD(自带SSD缓存的机械硬盘)和用户自行组装的SSD+HDD……

    2025年9月16日
    2300
  • Linux如何使软连接失效?

    在Linux系统中,软连接(符号链接)是一种指向文件或目录路径的特殊文件,类似于Windows的快捷方式,方便用户快速访问目标资源,但当目标文件被移动、删除、权限变更,或软连接本身被修改时,软连接就会失效,导致访问时报错“No such file or directory”,本文将详细介绍Linux系统中使软连……

    2025年10月6日
    600
  • Linux环境下如何彻底卸载已安装的JRE程序及残留文件?

    在Linux系统中卸载JRE(Java Runtime Environment)需要根据其安装方式选择不同的方法,常见的安装方式包括系统包管理器(如apt、yum/dnf)安装、手动解压安装以及通过SDKMAN!等工具安装,以下是详细的卸载步骤和注意事项,确认JRE的安装方式在卸载前,需先确定JRE是通过哪种方……

    2025年8月29日
    3000
  • linux如何修改本机ip地址

    在Linux系统中修改本机IP地址是日常运维和开发中的常见操作,根据不同的Linux发行版和网络管理工具,操作方法略有差异,本文将详细介绍通过命令行、配置文件及图形界面三种主流方式修改IP地址的具体步骤,并对比不同发行版的配置差异,通过命令行临时修改IP地址命令行修改IP地址分为ifconfig(传统工具)和i……

    2025年9月16日
    2200
  • Linux系统下MongoDB服务如何正确启动?

    在Linux系统中启动MongoDB需要一系列步骤,涉及安装验证、配置文件检查、权限设置及启动命令执行等,以下是详细操作流程,帮助用户顺利完成MongoDB的启动并解决常见问题,安装前确认在启动MongoDB前,需确保系统已正确安装MongoDB,不同Linux发行版的安装命令不同:基于Debian/Ubunt……

    2025年8月28日
    2800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信