awk命令查找和替换值

时间:2019-11-26 14:19:07

标签: linux awk

我需要帮助以下代码我很难理解。如果有人可以抽出一点时间来解释这一点,我将非常感激。

它的基本作用是基于file1的col1中的值在file2的col1中定位一行,并替换file2中的7列值,这些列的位置通过-v标志作为输入提供。

awk --lint '-F|' -v col1pos=5 -v col2pos=29 -v col3pos=114 -v col4pos=115 -v col5pos= -v col6pos=26 -v col7pos= -v col8pos= 'BEGIN{OFS = FS; a[var 2] = col1pos; a[var 3] = col2pos; a[var 4] = col3pos; a[var 5] = col4pos; a[var 6] = col5pos; a[var 7] = col6pos; a[var 8] = col7pos; a[var 9] = col8pos} NR == FNR {a[$1] = $2; for (i
= 3; i <= 9; ++i) a[$1 FS i] = $i; next} $col1pos in a {for (i = 9; i >= 3; --i) if (length(a[var i]) > 0) $(a[var i]) = a[$col1pos FS i]; $col1pos = a[$col1pos]}1' file1 file2

1 个答案:

答案 0 :(得分:1)

由于没有提供样本,因此很难理解您的完整问题;如果我们谈论代码,那么我会尽力解释如下。请仔细阅读,如有任何疑问,请通知我。

代码说明:

a["string"]

注意: 我提到了两点改进代码的地方,这里提到了它们的含义。

  • 第一点:无需设置a[variable],因为默认情况下两者都具有与空格相同的值。
  • 第二点:设置数组的索引时要小心,如果它的字符串然后使用sleep_(50) string out="" print win32SystemWait_("cmd.exe /C echo hallo", out, -1) print "Output :" out ,或者在使用变量的情况下尝试使用ID Use Group 13A Sheet1 Out 13A Sheet2 In 13A Sheet3 Out 13A Sheet4 In 13A Sheet5 Out