我需要将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有什么想法吗?
答案 0 :(得分:2)
您可以使用此awk修剪字段> 300:
awk 'BEGIN{FS=OFS=","}
{for (i=1; i<=NF; i++) if (length($i)>300) $i=substr($i,1,300)}
1' file.csv
答案 1 :(得分:0)
我已将300改为3以使其可读:
$echo "Hello,World"| awk '{split($0, fields,",");str=""; for (field in fields){str = str substr(fields[field],0,3) ","}; print substr(str,0,length(str)-1)}'
Hel,wor
线条有点长,分裂是:
awk '{split($0, fields,",");
str="";
for (field in fields){
str = str substr(fields[field],0,3) ","
};
print substr(str,0,length(str)-1)}'