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

如何使用AWK去除分号分隔字段首尾的空白字符

正确awk实现方案

原写法错误原因

  • 第一种写法awk -F";" '{$1=$1}1':仅设置了输入分隔符为;,未指定输出分隔符OFS,默认OFS为空格,触发字段重排后会用空格替换原分隔符,同时没有对每个字段做去空格处理,因此不符合要求。
  • 第二种写法awk -F";" '{gsub(/^[ \t]+|[ \t]+$/,""); print;}':gsub未指定目标对象时默认处理整行内容,仅能去掉整行的首尾空白,无法处理每个字段前后的空白,因此达不到效果。

最终可用命令

awk -F';' -v OFS=';' '{for(i=1;i<=NF;i++) gsub(/^ +| +$/,"",$i)}1'

命令说明

  • -F';' 指定输入字段分隔符为分号
  • -v OFS=';' 指定输出字段分隔符为分号,保证输出时保留原分隔符格式
  • 遍历所有字段,对每个字段单独执行gsub,仅匹配删除字段首尾的0x20半角空格,不会影响字段内部的空格(比如27 mA中间的空格会保留)
  • 末尾的1是awk简写,等价于print $0,输出处理后的整行

效果验证

输入1(无前导空格):
27 mA; 25 mA ; 24 mA ; 22 mA;
输出:
27 mA;25 mA;24 mA;22 mA;

输入2(有前导空格):
27 mA; 25 mA ; 24 mA ; 22 mA;
输出:
27 mA;25 mA;24 mA;22 mA;
完全匹配期望结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 19:18:02