# cut1.awk BEGIN{ if(ARGC<3) usage() # 1行の最大文字数と in_file を指定しないと終了。 a=ARGV[1] # 1行の最大文字数を a に代入する。 if(a+0 < 20) usage() # 1行の最大文字数が20未満ならば終了。 ARGV[1]="" } { line[NR]=$0 n=NR } END{ for(i=1;i<=n;i++){ m=jlength(line[i]) if(m==0){ printf("\n\n") nagasa=0 } else for(j=1;j<=m;j++){ w[j]=jsubstr(line[i],j,1) nagasa += length(w[j]) if(nagasa<=a) printf("%s",w[j]) else if(nagasa>a && w[j] ~ /[。、.,・」).,]/){ printf("%s",w[j]) } else if(nagasa>a && w[j] !~ /[。、.,・「).,]/){ printf("\n%s",w[j]) nagasa = length(w[j]) } } } print } func usage(){ print "awk -f cut1.awk 70 in_file" exit }