【问题标题】:Compare two lines in same file比较同一文件中的两行
【发布时间】:2011-11-04 23:31:04
【问题描述】:

给定如下文件:-

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

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

我可以使用cat tail -2获取最后两个

【问题讨论】:

    标签: linux unix diff cmp uniq


    【解决方案1】:
    tail -n 2 filename.txt | uniq | wc -l
    

    这将产生 1 用于相同的行,2 用于不同的行。

    【讨论】:

    • 我的解决方法是一样的!除了我添加了对
    • 我的解决方法是一样的!除了我添加了一个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
    

    【讨论】:

      【解决方案3】:

      试试这个

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

      【讨论】:

        【解决方案4】:

        这可能对你有用:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-03-09
          • 2012-12-31
          • 1970-01-01
          • 2016-12-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多