[英]Shell nested for loop and string comparison
我有两个文件file1
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
在file2中有两行
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陈述无法正常运作。 我做错了什么?
这就是diff
目的。 例:
$ diff dat/newdat1.txt dat/newdat2.txt
0a1,2
> 103.27.24.114:99999999
> 103.27.24.114:88888888888
其中newdat1.txt
和newdat2.txt
是:
104.128.225.208:8000
103.27.24.114:80
104.128.225.208:8000
和
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
您可以根据选项和需求简单地测试diff
的返回(有无输出)。 (例如, if diff -q $file1 $file2 >/dev/null; then echo same; else echo differ; fi
)
#!/bin/bash
for n in $(diff file1 file2); do
if [ -z "$firstLineDiscarded" ]; then
firstLineDiscarded=TRUE
elif [ $n != ">" ]; then
echo $n
fi
done
如果您不喜欢该特定方法,那么这似乎可行。
当然,如果输入语法发生变化(包括数据中的空格),它会崩溃,但是对于这种严格的应用……可能就足够了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.