![如何将 awk 单行脚本转换为独立脚本?](https://linux22.com/image/76167/%E5%A6%82%E4%BD%95%E5%B0%86%20awk%20%E5%8D%95%E8%A1%8C%E8%84%9A%E6%9C%AC%E8%BD%AC%E6%8D%A2%E4%B8%BA%E7%8B%AC%E7%AB%8B%E8%84%9A%E6%9C%AC%EF%BC%9F%20.png)
我如何将这段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{,}