我使用此命令列出长度为2的单词
tr ' ' '\n' < cca.txt | grep '^.\{2\}$'
但它会多次出现重复的单词。
如何让它打印长度为2的单词列表而不重复?
输入样本
" إن اللقاء هو فقط عرض لفيلم مسجل عن محاضرة له سابقة وأنهم يتوقعون جمهورا كبيرا لها
ثم التقيت بمبشر قضى أكثر ردح من حياته في بلاد الشام يدأب لإنشا"
答案 0 :(得分:2)
您只需输入sort -u
:
tr ' ' '\n' < cca.txt | grep '^.\{2\}$' | sort -u
或者更简单的形式:
tr ' ' '\n' < cca.txt | grep '^..$' | sort -u
但是,请考虑以下示例文本:
## Todo list with priorities
- An option: priority, time, or mix
- a: Topics
- b: categories
使用原始解决方案,##
和a:
之类的内容将匹配哪些不是真正的单词。你可能会更加严格:
tr ' ' '\n' < cca.txt | grep '\<..\>' | sort -u
这样只有An
和or
匹配。
最后,如果您的grep
版本具有-o
标记,那么您可以在不tr
的情况下执行此操作:
grep -o '\<..\>' cca.txt | sort -u
您也可以在一个awk
过程中执行所有操作:
awk '{ for (i=1; i<=NF; ++i) if ($i ~ /\<..\>/) u[$i]=1 } END { for (i in u) print i }' cca.txt
<强>更新强>
我发现\<
对阿拉伯语不起作用,至少在我的系统中不行(Debian / Linux)。但是,我提出的第一个解决方案似乎有用,为此输入:
إن اللقاء هو فقط عرض لفيلم مسجل عن محاضرة له
سابقة وأنهم يتوقعون جمهورا كبيرا لها
ثم التقيت بمبشر قضى أكثر ردح من حياته
في بلاد الشام يدأب لإنشا
إن اللقاء هو فقط عرض لفيلم مسجل عن محاضرة له
سابقة وأنهم يتوقعون جمهورا كبيرا لها
ثم التقيت بمبشر قضى أكثر ردح من حياته
في بلاد الشام يدأب لإنشا
我明白了:
إن
ثم
عن
في
له
من
هو
所有看起来都是2个字母并且是唯一的。