我如何将这段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{,}