Сравните две строки в одном файле - PullRequest
3 голосов
/ 05 ноября 2011

Учитывая файл, подобный следующему: -

01/09/2005
02/09/2005
03/09/2006
03/09/2006

Я хочу сравнить, совпадают ли последние две строки, и вернуть 1, если это так, или 0, если они не совпадают.

Я могу получить последние два, используя cat tail -2

Ответы [ 4 ]

3 голосов
/ 05 ноября 2011
tail -n 2 filename.txt | uniq | wc -l

Это даст 1 для одинаковых строк, 2 для разных.

2 голосов
/ 05 ноября 2011

Попробуйте это

[ `cat | tail -n 2 | uniq | wc -l` -eq "1" ] && echo 1 || echo 0

Замените echo на exit, чтобы сделать его выходным значением.Используется echo только для более быстрого тестирования.

#!/bin/bash
[ `cat | tail -n 2 | uniq | wc -l` -eq "1" ] && exit 1
exit 0
2 голосов
/ 05 ноября 2011

Как насчет этого:

lc=`wc -l filename.txt | cut -d " " -f1`
if [ $lc -ge 2 ]
then 
    ulc=`tail -n 2 filename.txt | uniq | wc -l`
    if [ $ulc -eq 1 ]
    then
        echo "Last two lines are identical"
    fi
fi
1 голос
/ 11 января 2012

Это может работать для вас:

 sed -n '$!h;${G;/\(.*\)\n\1$/{s/.*/1/p;q};s/.*/0/p}' filename.txt
...