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

如何用shell脚本删除~分隔dat文件各列的首尾空格

去除~分隔spool生成文件每列首尾空格的Shell实现方案

示例输入行:
Souvik Bhattacharya~ India ~ Ericsson ~
期望输出结果:
Souvik BhattacharyaIndiaEricsson~

你可以直接用awk完成需求,无需复杂逻辑,同时可以保留字段中间的正常空格。

单行直接处理命令

如果你只需要临时处理单个文件,直接执行以下命令即可:

awk 'BEGIN{FS=OFS="~"} {for(i=1;i<=NF;i++) {gsub(/^[[:space:]]+|[[:space:]]+$/,"",$i)}} 1' 输入文件.dat > 输出文件.dat

参数说明:

  • BEGIN{FS=OFS="~"} 提前指定输入、输出的字段分隔符都为~,匹配你的文件格式
  • 遍历每行的每一个字段,用正则匹配字段开头、结尾的所有空白字符替换为空,实现字段trim效果
  • 末尾的1是awk的简化写法,等价于输出所有处理完成的行

可复用Shell脚本

如果需要经常处理这类文件,可以写成通用脚本trim_spool_dat.sh:

#!/bin/bash
if [ $# -lt 1 ]; then
    echo "用法: $0 输入dat文件路径 [输出文件路径,不填则直接修改原文件]"
    exit 1
fi

input="$1"
output="${2:-$(mktemp)}"

awk 'BEGIN{FS=OFS="~"} {
    for(i=1;i<=NF;i++) {
        gsub(/^[[:space:]]+|[[:space:]]+$/,"",$i)
    }
    print
}' "$input" > "$output"

# 未指定输出文件时覆盖原文件
[ $# -eq 1 ] && mv "$output" "$input"

使用方式:

  • 生成新的处理后文件:chmod +x trim_spool_dat.sh && ./trim_spool_dat.sh 原文件.dat 处理后文件.dat
  • 直接修改原文件:./trim_spool_dat.sh 原文件.dat

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:06:03