Linuxでawkの代わりにsedとtrを使用する

Linuxでawkの代わりにsedとtrを使用する
#!
awk '{ for (i=1; i<=NF; i++) no[$i]++
} END{ for (word in no) printf "%-15s%5d\n", word, no[word]
}' $* 

これは単語とその繰り返しを表示するコマンドの説明なので、awkの代わりにsedやtrを使用したいので、句読点を無視して大文字と小文字を区別しないようにします。

ベストアンサー1

単語と最大数を知っている場合とをtr使って「計算」することは実際に可能ですsed。ただし、これは興味深いものではないため、1つの単語に対してのみこれを行い、その単語が4回以下である場合にのみ実行します。

入力ファイル:

foo bar
foo bar baz
bar baz
foo

悪夢sed

$ tr '\n' ' ' <input |
  sed -r ': start; s/((^|[^%]))foo\b/\1%foo/; T end; s/%foo/%%foo/; t start; '\
': end; : delstart; s/(foo.*) %foo\b/\1/g; t delstart' |
  tr ' ' '\n' |
  sed -r 's/^%%%%/4 /; s/^%%%/3 /; s/^%%/2 /; s/^%/1 /'

4 foo
bar
bar
baz
bar
baz

%単語の直前に「count文字」(ここでは)が表示されても効果はありません。

おすすめ記事