Pet*_*ier 7 csv bash awk replace sed
假设我有一个字符串
"1,2,3,4"
Run Code Online (Sandbox Code Playgroud)
现在我想用一些不同的值替换,例如字符串的第3个字段.
"1,2,NEW,4"
Run Code Online (Sandbox Code Playgroud)
我设法使用以下命令执行此操作:
echo "1,2,3,4" | awk -F, -v OFS=, '{$3="NEW"; print }'
Run Code Online (Sandbox Code Playgroud)
现在要替换的列的索引应该作为变量传递.所以在这种情况下
index=3
Run Code Online (Sandbox Code Playgroud)
我怎么能把这个传递给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 }'
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
让shell在awk程序中插入索引:
echo "1,2,3,4" | awk -F, -v OFS=, '{$'$index'="NEW"; print }'
Run Code Online (Sandbox Code Playgroud)
请注意原始单引号awk程序如何分为三部分,单引号开头'{$',插值索引值,后跟程序的单引号余数.
这可能对你有用:
index=3
echo "1,2,3,4" | awk -F, -v OFS=, -v INDEX=$index '{$INDEX="NEW"; print }'
Run Code Online (Sandbox Code Playgroud)
要么:
index=3
echo "1,2,3,4" | sed 's/[^,]*/NEW/'$index
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34606 次 |
| 最近记录: |