美文网首页
2018.10.12

2018.10.12

作者: 天秤座的机器狗 | 来源:发表于2018-10-12 09:57 被阅读17次

    假设有这样的文本

    cat a.txt
    1
    2
    3
    4
    5
    10
    

    另外有这样的文本

    cat all.tmp.txt
    2 3 4
    3 6 7 
    7 8 9 
    4 5 6
    7 8 9
    1 4 9 
    5 6 7 
    6 7 9
    
    

    统计一下a.txt 中有多少存在于all.tmp.txt中
    shell脚本

    #!/bin/bash
    echo "" >tmp.txt
    cat a.txt|while read pos
    do
    
    grep $pos all.tmp.txt>${pos}.txt
    if test -s ${pos}.txt;then
        a=1
    else
        a=0
    fi
    echo $a >>tmp.txt
    
    #echo $pos
    done
    awk '{sum+=$0}END{print sum;}' tmp.txt
    
    
    bash tmp.sh
    5
    

    有三个知识点是我需要掌握的
    1.如何将文本内容追加到一个文件中
    比如,脚本中的

    echo "" >tmp.txt #建立一个空的文件
    echo $a >>tmp.txt #将文本追加到tmp.txt中
    

    shell中 >是创建,而>>是追加

    2.了解一下我可能不那么熟悉的shell脚本中的判断语句的表达

    if test -s ${pos}.txt;then
        a=1
    else
        a=0
    fi
    
    if ;then 
    else 
    fi
    

    3.判断一个文件是不是空
    用test -s file
    如果是空则返回false
    非空则返回true

    if test -s ${pos}.txt;then
        a=1
    else
        a=0
    fi
    

    当然这个问题本身肯定有很多更优解,这个脚本也因为生成太多的中间文件,但是shell中我还没想到有什么好的方法去解决,也许可以试试python

    相关文章

      网友评论

          本文标题:2018.10.12

          本文链接:https://www.haomeiwen.com/subject/qbjwaftx.html