查找文件中连续出现的字符串

查找文件中连续出现的字符串

大家好,
我有一个文件,其中每行都出现以下格式的字符串:

STRING1  
STRING2  
STRING1  
STRING1  
STRING1   
STRING3  
STRING4  
STRING4  
STRING5  
STRING6  
STRING5 

我想使用 bash 脚本查找文件中连续出现的字符串。例如,在上面的例子中,STRING1STRING4连续出现,并且应该出现在输出中。请注意,即使STRING5出现两次,它也不是连续出现的。

我不想对文件进行排序,因为文件大小通常很大,这会增加开销。用户将提供字符串,脚本将告知该字符串是否在文件中连续出现。

仅供参考,字符串后面可能有不需要的空格。

答案1

$ uniq -d <<< 'STRING1
> STRING2
> STRING1
> STRING1
> STRING1
> STRING3
> STRING4
> STRING4
> STRING5
> STRING6
> STRING5'
STRING1
STRING4

答案2

awk -v "key=STRING4" '
    $1 == key && $1 == prev {
        print key " appears on consecutive lines on line " NR
        found=1
        exit 0
    } 
    {prev = $1}
    END {if (! found) {print key " does not appear on consecutive lines"; exit 1}}
' filename

答案3

那么读取和字符串比较呢?对我来说这似乎是最简单的解决方案。

while read line; do 
    if [ "$line" == "$temp" ]; then 
        echo "$line"; 
    fi; 
    temp=$line; 
done < test.txt

相关内容