Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 比较同一文件中的两行_Linux_Unix_Diff_Cmp_Uniq - Fatal编程技术网

Linux 比较同一文件中的两行

Linux 比较同一文件中的两行,linux,unix,diff,cmp,uniq,Linux,Unix,Diff,Cmp,Uniq,给定如下所示的文件:- 01/09/2005 02/09/2005 03/09/2006 03/09/2006 我希望比较最后两行是否相同,如果相同,则返回1,如果不相同,则返回0 我可以用猫尾巴-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 ]

给定如下所示的文件:-

01/09/2005
02/09/2005
03/09/2006
03/09/2006
我希望比较最后两行是否相同,如果相同,则返回1,如果不相同,则返回0

我可以用猫尾巴-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
试试这个

[ `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
,为不同的行生成
2

这可能适用于您:

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

我的解决方案是一样的!除了我为<2行的文件添加了一个检查。我的解决方案是相同的!除了我添加了一个
exit
语句来返回“问题”中请求的代码之外。
 sed -n '$!h;${G;/\(.*\)\n\1$/{s/.*/1/p;q};s/.*/0/p}' filename.txt