# cut2.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(i==1){ # 1行目の printf("%2s"," ") # 最初に空白を2つ。 nagasa=2 } if(jlength(line[i])==0){ # 改行のみの行であれば printf("\n%2s"," ") # 最初に空白を2つ。 nagasa=2 } 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 cut2.awk 70 in_file" exit }