2011-11-04 69 views
3

鑑於類似如下的文件: -比較在同一個文件中的兩行

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

我想比較,如果最後兩行是相同的,並返回1,如果這樣還是0,如果他們不。

我能得到的最後兩個使用cat tail -2

回答

3
tail -n 2 filename.txt | uniq | wc -l 

這將產生1對於相同的線,2爲不同。

+1

我的解決方案是一樣的!除了我添加了一個檢查<2行的文件。 – jman

+0

我的解決方案是一樣的!除此之外,我添加了一個'exit'語句來返回「問題」中要求的代碼。 –

2

如何:

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 
+0

+1:討厭shell腳本:d – vines

2

試試這個

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

通過exit更換echo,使其退出值。使用echo只是爲了更快的測試。

#!/bin/bash 
[ `cat | tail -n 2 | uniq | wc -l` -eq "1" ] && exit 1 
exit 0 
1

這可能會爲你工作:

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