我需要将一个 csv 字符串拆分为一个数组,如果元素的内容超过 300 个字符,则将其元素的内容剪切为 lngth 或 300。 我非常接近它,但由于某种我无法弄清楚的原因,这不起作用:
awk '{split($0,fields,",")
for(field in fields)
if(length(fields[field]) >300){
gsub(fields[field],substr(fields[field],0,300),$0)
} print
}' file_in.csv > file_out
当我运行这个测试时我可以看到它:
awk '{split($0,fields,","); for(field in fields) if(length(fields[field]) >=301){print fields[field]} }' file_out
这仍在打印一些字段 知道我的 awk 有什么问题吗?
最佳答案
您可以使用此 awk 来修剪 > 300 的字段:
awk 'BEGIN{FS=OFS=","}
{for (i=1; i<=NF; i++) if (length($i)>300) $i=substr($i,1,300)}
1' file.csv
关于string - awk 字符串替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22068233/