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

如何用awk替换符号所有出现?及转换输出为properties格式

嘿,这两个awk的问题我熟,给你一步步讲清楚:

1. 如何使用awk替换某个符号的所有出现?

awk里做全局替换最常用的就是gsub()函数,它会把目标文本里所有匹配到的符号都替换掉,语法很简单:

gsub(/要替换的符号/, "替换后的内容", 目标范围)
  • 如果省略第三个参数,默认会处理当前整行(也就是$0)
  • 如果要替换的是正则里的特殊字符(比如.、*、+这些),记得加反斜杠转义

举几个实用例子:

  • 把文本里所有的逗号,换成竖线|:
    awk '{gsub(/,/, "|"); print}' your_input_file.txt
    
  • 把所有的点号.换成横杠-(注意点号要转义):
    awk '{gsub(/\./, "-"); print}' your_input_file.txt
    

2. 将Key: Value格式转换为Key=Value格式(适配.properties文件)

你的需求是把Key: Value Key: Value ...这种格式转成Key=Value,还要适配.properties文件(一般是每行一个键值对),分两种场景给你方案:

场景1:保留原有行结构,只替换格式

如果只是把每行里的Key: Value直接转成Key=Value,不需要拆分行,直接用gsub()替换: (冒号加空格)为=就行:

awk '{gsub(/: /, "="); print}' your_input.txt > output.properties

比如输入行是Name: Alice Age: 25,执行后会变成Name=Alice Age=25。

场景2:拆分每个键值对为单独一行(更符合.properties规范)

如果想让每个Key=Value占一行,贴合.properties文件的标准格式,可以遍历每行的每个字段,替换后单独打印:

awk '{
    for (i = 1; i <= NF; i++) {  # 遍历每行的每个字段
        gsub(/: /, "=", $i)      # 把当前字段的": "换成"="
        print $i                 # 打印处理后的字段
    }
}' your_input.txt > output.properties

这样输入行Name: Alice Age: 25会变成:

Name=Alice
Age=25

完美适配.properties文件的格式~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 13:32:56