如何将 awk 单行脚本转换为独立脚本?

如何将 awk 单行脚本转换为独立脚本?

我如何将这段awk单行代码重写为独立脚本?我想提高可读性以帮助我理解它是如何工作的。

awk 'BEGIN{FS=OFS=";"} NR==FNR{for(i=2;i<=7;i++) if($i!="\"\"") a[$1]=a[$1] FS $i;next} {n=split(a[$1],f,FS); if(n>7)n=7; for(i=2;i<=n;i++) $i=f[i]}1' csv{,}

答案1

语法未经检查和检查,所以我不知道它的作用或是否有效。我刚刚将单行代码重新格式化为独立的 awk 脚本,并添加了一些空格以提高可读性。如果原来的一句台词有效,那么这也应该有效。如果没有,就不会。

#! /usr/bin/awk -f

BEGIN {FS=OFS=";"}

NR==FNR { 
  for(i=2;i<=7;i++) if($i!="\"\"") a[$1]=a[$1] FS $i;
  next
}
{
 n=split(a[$1],f,FS);
 if(n>7)n=7;
 for(i=2;i<=n;i++) $i=f[i]
}
1

将其保存到文件(例如myscript.awk),使其可执行(chmod +x myscript.awk)并运行它:

./myscript.awk csv{,}

相关内容