comm使用前提是排序
-1 不输出文件1 特有的行
-2 不输出文件2 特有的行
-3 不输出两个文件共有的行
例子:打印 R_S.list2独有的内容
[root@db88:/mq] $comm -13 R_S.list1 R_S.list2
1111111111
2222222222
awk -F”[()]” ‘{print $2}’ 以()为分隔符
[root@db88:/mq] $cat lizi.list
CHANNEL(0115840268.GW5840) CHLTYPE(RCVR)
CHANNEL(GW3010.3133010001) CHLTYPE(SDR)
#!/bin/ksh
for i in 1 2 3
do
echo "Current file is R_S.list${i}"
#筛选MQ发送通道S.list,排序去重
#筛选mq接收通道R.list,排序去重
cat lizi.list${i}|grep "CHLTYPE(RCVR)"|awk -F"[()]" '{print $2}'|cut -d "." -f1|sort -u >R.list
cat lizi.list${i}|grep "CHLTYPE(SDR)"|awk -F"[()]" '{print $2}'|cut -d "." -f2|sort -u >S.list
##筛选MQ发送和接受通道都running的机构号 comm对比是基于排序去重的
comm -12 R.list S.list>R_S.list${i}
sleep 600 ##10min循环执行一次捕获新的双向running通道
done
###之后每次执行产生的RSxxxxxx.list都要和前一次的对比下,RS2.list有的,RS1.list没有的
#
#
###打印出第二次执行中,较第一次新增的双向通道都是running的机构
comm -13 R_S.list1 R_S.list2 > 2-1.list
###-1不打印包含在第一个文件中特有的行,-3表示不打印两个文件共有的行
#
###打印第三次对比第二次又新增的机构
comm -13 R_S.list2 R_S.list3 > 3-2.list
#cat S.list|while read line
#do
#R_ID=`echo $line|sed 's/\s\+//g' ` ##其中\s代表空格,+代表出现一次或多次。把所有空白格替换成空
#echo "${R_ID}"
# cat R.list|while read line
# do
# S_ID=`echo $line|sed 's/\s\+//g' ` ##循环比对发送和接受的机构
# if [ ${S_ID} -eq ${R_ID} ]; then
# echo "SID is ${S_ID}"
# echo "rid is ${R_ID} "
# else
# echo "no sid:${S_ID} "
# fi
# done
#done