You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用awk命令交换文本文件指定列并输出目标格式内容

操作方案

你这个文本的行结构固定:前2列分别是数字ID、时间戳,最后2列分别是业务标识、角色,中间夹的所有字段就是需要移动到行尾的姓名,直接用awk按列重组即可。

实现命令

执行以下命令会将处理后的结果写入result.txt文件,不会修改原始文件:

awk '{
    name = ""
    for(i=3; i<=NF-2; i++) {
        name = name " " $i
    }
    print $1, $2, $(NF-1), $NF, substr(name, 2)
}' file.txt > result.txt

如果需要直接修改原文件,先输出到临时文件再覆盖即可,不要直接用重定向写入原文件,会导致原文件被清空:

awk '{
    name = ""
    for(i=3; i<=NF-2; i++) {
        name = name " " $i
    }
    print $1, $2, $(NF-1), $NF, substr(name, 2)
}' file.txt > tmp.txt && mv tmp.txt file.txt

命令逻辑说明

  • NF是awk内置变量,代表当前行按空格分隔后的总列数
  • 遍历第3列到倒数第3列的所有字段,拼接为完整的姓名字符串
  • 按顺序输出ID、时间戳、倒数第二列(业务标识)、最后一列(角色)、拼接好的姓名,substr(name,2)是为了去掉拼接时开头多出来的空格

注:你给出的样例目标中第7行4846 202212:48:34+02:00 JR autotestbit Maintainer Walker Tom属于排版错位,按所有行的统一结构处理后,该行正确结果应为4846 202212:48:34+02:00 autotestbit Maintainer Walker Tom JR,和其余行的规则保持一致。

内容的提问来源于stack exchange,提问作者ggg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 12:45:31