Text-Processing

從文件創建單詞列表

  • October 5, 2022

我正在努力尋找一種學習新語言詞彙的有效方法。我希望能夠使用包含書籍的文件創建單詞列表。我是 Linux 新手,非常感謝任何幫助。

我想:

  • 有一個命令,該命令將輸入一個文本文件(例如 txt 格式)並輸出另一個文件,其中包含第一個文件中所有單個單詞的列表。
  • 新文件應按字母順序排列且不包含重複項(每個單詞應僅包含一次。)
  • 理想情況下,該命令還應該能夠檢查第二個文件並避免重複該文件中包含的任何單詞。(這樣我就可以創建一個我已經知道並且不再重複的文件或單詞。)

是否有合適的命令來執行此操作?

如果您將“單詞”定義為“單片語成字元”awk序列(通常定義為字母、數字和/或下劃線),那麼您可以使用 GNU和做您想做的事情sort

awk -v RS='\\W+' 'ARGIND==1{arr[$0]; next} !($0 in arr)' skip file | sort -u

skip您不想列印並file包含您的書的單詞文件在哪裡。

\W只是[^[:alnum:]_]. 但是,如果您對“單詞”的定義不包括數字,則更RS='\\W+'改為RS='[^[:alpha:]_]+',或者如果它包含撇號和連字元,則將其更改為RS="[^[:alpha:]_'-]+",或更改RS為與您對您認為構成的字元集的定義的否定匹配的任何其他內容“字”。

要學習 awk,請獲取 Arnold Robbins 所著的《Effective AWK Programming, 5th Edition》一書。

引用自:https://unix.stackexchange.com/questions/719839