bash - AWK:在给定位置和变量中的新值的情况下替换字符串中的字段

标签 bash variables awk field substitution

我正在尝试用 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'

干杯

最佳答案

你差不多完成了,删除 $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

关于bash - AWK:在给定位置和变量中的新值的情况下替换字符串中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19581105/

相关文章:

c - ifconfig 和套接字 inet_ntop 的不同 IP 结果

python - 修改服务器上文件内容的最佳脚本

perl - Perl 变量声明的正确方法

vb.net - vba 语言中的变量作用域类型

linux - 根据匹配模式将一行行 grep 到 shell 变量中

linux - 如何将数组实现为 AWK 表达式?

bash - 如何循环运行固定数量的进程?

java - 为什么下面的代码在导出 1 处停止?

php mysql..无法将变量分配给数据库中的字段名称

awk - 从 1 个文件到另一个文件的 vlookup