在同一文件中比较两行

3

假设有一个如下的文件:

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

我希望比较最后两行是否相同,如果相同则返回1,否则返回0。

可以使用cat tail -2命令获取最后两行。

4个回答

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

这将会产生 1 对于相同的行,对于不同的行则是 2

1
我的解决方案是一样的!只不过我增加了一个检查,用于处理少于2行的文件。 - jman
我的解决方案是一样的!只不过我添加了一个 exit 语句来按照“问题”要求返回代码。 - Daniel Böhmer

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

2

试试这个

[ `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

1

这个可能适合你:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接