2013-10-25 42 views
3

我试图用字符串替换字段中的13个字段并用逗号分隔。我有我想要替换的位置和我想要在分离的变量中赋予该位置的新值。使用bash。AWK:用给定位置和变量中新值的字符串替换字段

#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'

干杯

回答

2

你得这近,取出$盈的$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 
+0

首先感谢您的帮助!我想指定我最终使用的代码(因为我需要在具有ASH而不是BASH的BusyBux上运行脚本,并且<<<正在生成错误)是:__echo $ THR | awk -v chawk = $ pos -v thrawk = $ val -F',''{$ chawk = thrawk;打印}'OFS = \,__ – EnriqueH