sh/bash/dash/ksh/zsh等Shell脚本
-
mad_frog
- 帖子: 55
- 注册时间: 2011-06-29 11:26
#1
帖子
由 mad_frog » 2011-07-22 17:11
各位大侠好:
小弟有个问题想一下哈
有两个文件 test1.txt test2.txt
test1.txt中的内容为:
1
2
3
4
5
test2.txt中的内容为:
1
2
3
4
我想实现的结果是如果test2中的内容test1中都有(也可内容一样),则输出“ok”
如果test2中有的而test1中却没有,则输出“fail”
-
mad_frog
- 帖子: 55
- 注册时间: 2011-06-29 11:26
#2
帖子
由 mad_frog » 2011-07-22 17:38
补充一点,test文件的顺序不一定是有顺序的,有可能打乱了
-
fnan
- 帖子: 919
- 注册时间: 2009-07-01 22:04
#3
帖子
由 fnan » 2011-07-22 19:05
有个细节需要知道:如果t1 为
1
2
3
t2 为
1
3
3
算不算内容一样?
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
-
sk1418
- 帖子: 229
- 注册时间: 2007-07-01 17:36
- 系统: (En):System
- 来自: (En):address
-
联系:
#5
帖子
由 sk1418 » 2011-07-22 22:57
grep -F -v -f t2 t1
要是有输出,就是fail
没输出就ok
---
regards,
Kent
-
mad_frog
- 帖子: 55
- 注册时间: 2011-06-29 11:26
#6
帖子
由 mad_frog » 2011-07-22 23:27
num1=$(cat file1 | wc -l)
num2=$(sort file1 file2| uniq -d | wc -l)
if [ $num1 -le $num2 ];then
文件1是文件2的子集
else
文件1不是文件2的子集
fi
-
fnan
- 帖子: 919
- 注册时间: 2009-07-01 22:04
#7
帖子
由 fnan » 2011-07-23 1:33
常规写法都用了,我玩玩新花样:
[ $(sort t1 t2 t1|uniq -u) ] && echo fail || echo ok
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。