假设我有一个字符串
"1,2,3,4"
现在我想替换,例如字符串的第三个字段由一些不同的值。
"1,2,NEW,4"
我设法用下面的命令做到了这一点:
echo "1,2,3,4" | awk -F, -v OFS=, '{$3="NEW"; print }'
现在,要替换的列的索引应作为变量传递。所以在这种情况下
index=3
我如何将它传递给 awk?因为这行不通:
echo "1,2,3,4" | awk -F, -v OFS=, '{$index="NEW"; print }'
echo "1,2,3,4" | awk -F, -v OFS=, '{$($index)="NEW"; print }'
echo "1,2,3,4" | awk -F, -v OFS=, '{\$$index="NEW"; print }'
感谢您的帮助!
最佳答案
这可能对你有用:
index=3
echo "1,2,3,4" | awk -F, -v OFS=, -v INDEX=$index '{$INDEX="NEW"; print }'
或:
index=3
echo "1,2,3,4" | sed 's/[^,]*/NEW/'$index
关于bash - 如何使用 sed/awk 替换以逗号分隔的字符串中的第 n 列/字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9838160/