【问题标题】:AWK: substitute a field from a string given the position and the new value in variablesAWK:从给定位置和变量中的新值的字符串中替换字段
【发布时间】:2013-11-04 01:20:43
【问题描述】:

我正在尝试用逗号分隔的 13 个字段替换字符串中的字段。我既有要替换的位置,也有要在分隔变量中赋予该位置的新值。使用 bash。

#Original string:
THR=’0,0,0,0,0,0,0,0,0,0,0,0,0’
#Position I want to manipulate:
pos=’3’
#Value I want to write in the field "pos"
val=’8.73’

# What I'm trying to do:
echo $THR | awk -v chawk=$pos -v thrawk=$val -F',' '{ print; $chawk=$thrawk; print }'

THR 应该是 '0,0,8.73,0,0,0,0,0,0,0,0,0,0'

干杯

【问题讨论】:

    标签: bash variables awk field substitution


    【解决方案1】:

    差不多了,去掉$thrawk前面的$

    awk -v chawk=$pos -v thrawk=$val -F',' '{ print; $chawk=thrawk; print }' OFS=\. <<< $THR
    0,0,0,0,0,0,0,0,0,0,0,0,0
    0.0.8.73.0.0.0.0.0.0.0.0.0.0
    

    恢复到变量THR

    THR=0,0,0,0,0,0,0,0,0,0,0,0,0
    THR=$(awk -v chawk=$pos -v thrawk=$val -F',' '{ $chawk=thrawk; print }' OFS=\. <<< $THR)
    echo $THR
    0.0.8.73.0.0.0.0.0.0.0.0.0.0
    

    【讨论】:

    • 首先感谢您的帮助!我想指定我最后使用的代码(因为我需要在具有 ASH 而不是 BASH 并且 echo $THR | awk -v chawk=$pos -v thrawk=$val -F',''{ $chawk=thrawk;打印 }' OFS=\,
    猜你喜欢
    • 2020-09-15
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    • 2020-07-19
    • 2018-04-12
    • 2022-08-14
    相关资源
    最近更新 更多