使用 AWK 将单词替换为指定的单词

使用 AWK 将单词替换为指定的单词

我的代码生成了几个 json 文件,它们看起来都类似于

{
    "instance": "sample_instance_05",
    "steps": [
        {
            "129": "North",
            "14": "North",
            "82": "North",
            "53": "North",
            "149": "North",
            "6": "North",
            "79": "North",
            "40": "North",
            "151": "North",

这些文件都在一个目录中。我的老板刚告诉我,我应该使用Nfor NorthSfor SouthEforEastWfor来生成数据West

由于这些数据文件需要相当长的时间才能生成,我不想为了这样一个简单的文本替换而再次运行代码。AWK/SED/GREP 等显然适合这项工作(我以前用过一点 AWK,但已经很生疏了)

是否有更简单的 Bash + AWK 循环,允许我按照指示转换文件中的所有行?

答案1

sed方法

我建议使用sed。以下内容应该可以替换中的所有word_1to实例。word_2myfile.json

$ sed -i 's/word_1/word_2/g' myfile.json

例如,将“North”改为“N”:

$ sed -i 's/North/N/g' myfile.json

请注意,该-i标志将调用就地编辑,因此数据将立即改变。

awk方法

您也可以awk这样使用:

$ awk '{gsub(/word_1/,"word_2")}1' myfile.json > patchedfile.json

相关内容