Bash:如果有任何单词重复,如何签入文件

时间:2015-05-16 11:45:30

标签: bash shell

我有一个文件,每行有6个字符的单词,我想检查是否有任何重复的单词。我做了以下但是有些事情是对的:

#!/bin/bash

while read line
do
    name=$line
    d=$( grep '$name' chain.txt  | wc -w )

    if [ $d -gt '1' ]; then 
    echo $d $name
    fi
done <$1

2 个答案:

答案 0 :(得分:3)

假设每个单词都在一个新行上,您可以在不循环的情况下实现此目的:

$ cat chain.txt  | sort | uniq -c | grep -v " 1 " | cut -c9-

答案 1 :(得分:2)

您可以使用awk

 awk -F'\n' 'found[$1] {print}; {found[$1]++}' chain.txt

将字段分隔符设置为换行符,以便我们查看整行。然后,如果数组found中已存在该行,则打印该行。最后,将该行添加到找到的数组中。

注意:如果一行仅被抑制一次,那么如果出现相同的行,例如6次,它将被打印5次。