将特定列替换为在shell脚本中循环内的文件中作为参数传递的值

时间:2017-08-24 12:45:00

标签: shell unix sh

假设我们有一个文件test_file.csv

"261718"|"2017-08-21"|"ramesh_1"|"111"
"261719"|"2017-08-23"|"suresh_1"|"112"

必需的修改后的test_file.csv应为:

"261718"|"2017-08-21"|"ramesh"|"111"
"261719"|"2017-08-23"|"suresh"|"112"

如何使用作为参数传递的必需值来查找和替换第三列?它应该在迭代中。

1 个答案:

答案 0 :(得分:0)

您可以将参数保存为逗号分隔值,并将其存储在变量args中。

使用awk选项将此变量传递给-v。用第n个数组元素覆盖第三列$3,其中n是当前行号

args='"ramesh","suresh"'

awk  -F "|" -v args=$args '
BEGIN { 
       split(args,arr,",") 
      }
{
   $3=arr[NR];OFS=FS;print

}' test_file.csv

输出:

"261718"|"2017-08-21"|"ramesh"|"111"                                                                                                                                     
"261719"|"2017-08-23"|"suresh"|"112"