我有两个文件
文件1

104.128.225.208:8000
103.27.24.114:80
104.128.225.208:8000

和文件2
103.27.24.114:99999999
103.27.24.114:88888888888
104.128.225.208:8000
103.27.24.114:80
104.128.225.208:8000

在文件2中有两行新行
103.27.24.114:99999999
103.27.24.114:88888888888

所以我想检查文件中是否有新行
for i in $(cat $2)
    do
        for j in $(cat $1)
        do
            if [ $i = $j ]; then
                echo $i
            fi
        done
    done

/.program file1 file2

但我没有得到预期的产出。我认为我的if语句不起作用。我做错什么了?

最佳答案

你的问题可能是你在file1中的每一行上为file2中的每一行循环。
comm实用程序可以满足您的需要,但它假定两个文件都已排序。

$ sort file1 -o file1
$ sort file2 -o file2
$ comm -13 file1 file2
103.27.24.114:99999999
103.27.24.114:88888888888

关于linux - 嵌套的Shell用于循环和字符串比较,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29289020/

10-13 07:50