【文本處理】規範字與常用字的交集

臺灣教育部常用字有4808個,但是在寡人看來,裏面還是包含了不少生僻字。

《大陸規範字表》是2013年發佈的,前3500字是常用字,中間3000字是次常用字,最後1605是生僻字。

那麼我通過sed命令,找到了他們的交集。大陸規範字與臺灣4808常用字的交集字數為:

3500常用字 2262
3000次常用字 774
1605生僻字 23
合計 3059

特別關注

大陸規範字的生僻字裏面,竟然有23個臺方的「常用字」,它們是:

氾吒仳玟苧於迺祐祕琊崁脩浬陴蒐甦遘楞瘀夥鄹谿釐

這些字我真的認的不多,有時間去查一下重編國語字典看看它怎麼說。

如何找到它們的交集?

使用sed -f命令時要注意,它的--file裏面的正則有它特定的格式:

s/一/;\0/
#中間省略4806行
s/龜/;\0/

sed的用法是:

sed -f rxpfile.txt target.txt > output.txt

為甚麼不用comm和diff?

衆所周知,linux有兩個專門找相同和找不同的命令,分別是comm和diff,那為何寡人不去用它們?

首先這兩種方法都是要排序的,排就排,那麼先用vim排個序…

:sort

其次,diff並不符合需求,因為它是逐行比對,而且它是找不同,我現在是要找相同。這個頁面詳細講解了diff的用法。

那麼我們來看一下comm。

根據這裏的介紹,comm file1 file2會列出三列,第一列是file1獨有的,第二列是file2獨有的,那麼第三列就是我們要的交集。

如果想只打印第三列,加個參數即可:comm -12 file1 file2

參數的意思是,-1就是打印第一列,-2不打印第二列。不要誤以為是打印哦。

那麼,comm確實也是可以找出交集的,而且比sed要快要方便。那麼它唯一的缺點就是要排序了,我試把未排序的file1和file2用來comm,結果不行。

2 thoughts on “【文本處理】規範字與常用字的交集”

Leave a Comment