假设我有一个字符串如何使用sed/awk替换逗号分隔字符串中的第n列/字段?
"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 }'
感谢您的帮助!
您可以使用'-v var = value'通过命令行在awk中定义一个变量,然后使用'$ var'。所以这个文本替换黑客是不需要的。 – Kaz 2012-03-24 18:30:37