2つのファイルがあります。
file1
固有の単語リストfile2
複数の文を含む
file1
各単語の発生回数を一覧表示するタブ区切りのファイルを出力したいと思います。file2
ファイル1にリストされている順序を維持しながら。
たとえば、
file 1
:dog apple cat
file 2
:the dog played with the cat and the cat was white. the boy ate the apple.
- 希望の出力:
dog 1 apple 1 cat 2
従来試してみた回答コミュニティはすべて出力をソートします。
ベストアンサー1
すべてのUnixシステムのすべてのシェルでPOSIX awkを使用してください。
$ cat tst.awk
BEGIN { OFS="\t" }
NR==FNR {
words[NR] = $1
next
}
{
$0 = " " $0 " "
gsub(/[^[:alpha:]]+/," ")
for ( i in words ) {
word = words[i]
cnts[word] += gsub(" "word" ","&")
}
}
END {
for ( i=1; i in words; i++ ) {
word = words[i]
print word, cnts[word]+0
}
}
$ awk -f tst.awk file1 file2
dog 1
apple 1
cat 2
上記では、「単語」がすべてアルファベット文字で、一致が大文字と小文字を区別したい場合、または例のように入力がすべて小文字で、例のようにfile1の単語が一意であると仮定します。