単語ごとに区切る
ちょっと gawk の機能を使ってみたかったので作ってみました。
いわゆる文字クラスを用いているところと、まとめたい部分に故意に括弧をつけているあたりがポイントですかね。
いわゆる文であれば、コメントを冒頭に付けやすいのですが、関数の羅列だけど、全体である意味を成す場合にコメントが付けやすくなります。
#! /usr/bin/gawk -f # usage: gawk -f split-words.awk 'phrases_within_single_quotes' # input: phrase within single quotes (ARGV[1]) # output: double quoted words BEGIN { # section of spliting words { # add space top of upper cases ARGV[1] = gensub(/([[:upper:]]+)/, " \\1", "g", ARGV[1]); # remove unnecessary space sub(/ /, "", ARGV[1]); # split words n_argv = split(ARGV[1], a_argv, /[[:punct:][:space:]]+/); } # connect double quoted words for (i = 1; i <= n_argv; i++) { printf("\"%s\" ", a_argv[i]); } print ""; }
以下のような感じで split してくれます。
$ gawk -f split-words.awk 'Hello, World' "Hello" "World" $ gawk -f split-words.awk 'Hello, AWK' "Hello" "AWK" $ gawk -f split-words.awk 'Hello, WorldWideWeb' "Hello" "World" "Wide" "Web"