免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1788 | 回复: 9
打印 上一主题 下一主题

求教能够把一个包含在另一个文件中的文件去除的脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-26 17:33 |只看该作者 |倒序浏览
谢谢!

论坛徽章:
0
2 [报告]
发表于 2007-03-26 17:37 |只看该作者
grep -v -f

论坛徽章:
0
3 [报告]
发表于 2007-03-27 09:06 |只看该作者
谢谢
但是又没有 类似于awk '{if ($1=="'$x'")  这样精确匹配的脚本亚

论坛徽章:
0
4 [报告]
发表于 2007-03-27 09:25 |只看该作者
file1

test1 netapp100:/vol/vol2/test1
test2 netapp100:/vol/vol2/test2
test3    netapp100:/vol/vol2/test3
test4  netapp100:/vol/vol2/test4
test  netapp100:/vol/vol2/test

file2
test1 netapp100:/vol/vol2/test1
test3    netapp100:/vol/vol2/test3
test  netapp100:/vol/vol2/test

目的生成file3
内容
test2 netapp100:/vol/vol2/test2
test4  netapp100:/vol/vol2/test4


我写的

#!/usr/bin/bash
NAMELIST="./logins"
new_number=$(cat file1_new|wc -l)
tmp_number=0
cp file1_old file2
for x in  `cat $NAMELIST`
do
awk '{if ($1=="'$x'")  print("add_mark%s",$0);}' file1_old >>file1_new
if [ "$new_number" -gt "$tmp_number" ]; then
     tmp_number=`expr $tmp_number + 1`
     echo $tmp_number
  else
     sed "s/$x/#$x#/" file2 >tmp&&mv tmp file2
fi
done

sed -e  "/^#/d"  file2  >tmp&&mv tmp file2

[ 本帖最后由 tnthb 于 2007-3-27 10:09 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2007-03-27 09:54 |只看该作者
  1. BEGIN {
  2.         while((getline < "file1") != NULL) {
  3.                 a[$1]=1;
  4.         }
  5. }
  6. {
  7.         if(a[$1]!=1) {
  8.                 printf("%s\n",$0);
  9.         }
  10. }
复制代码

论坛徽章:
0
6 [报告]
发表于 2007-03-27 16:16 |只看该作者
原帖由 tnthb 于 2007-3-27 09:25 发表
file1

test1 netapp100:/vol/vol2/test1
test2 netapp100:/vol/vol2/test2
test3    netapp100:/vol/vol2/test3
test4  netapp100:/vol/vol2/test4
test  netapp100:/vol/vol2/test

file2
test1 netap ...



#!/bin/sh
cat file1

while read line
do
    a1= `echo $line|awk '{print $1}'`
    line0=`cat file2`
    a2=`echo $line0|awk '{print $1}'`
   if [ "$a1" == "$a2" ];then
   continue
  else
    sed -n '/$a1/p' file1 >temp.txt
   fi
done

不知道对不对,可以做一个参考,我没有办法试这个shell

论坛徽章:
0
7 [报告]
发表于 2007-03-27 16:59 |只看该作者
能麻烦给解释一下吗?  谢谢!

论坛徽章:
0
8 [报告]
发表于 2007-03-28 09:36 |只看该作者
#!/usr/bin/bash
cat file1>>file2
awk '{a[$2]++;b[$2]=$0;}END{for(i in a) if(a[i]==1) printf("%s\n",b[i]);}' file2>file3

论坛徽章:
0
9 [报告]
发表于 2007-03-28 10:00 |只看该作者
#sed -n '/test/p' file1
test1 netapp100:/vol/vol2/test1
test2 netapp100:/vol/vol2/test2
test3    netapp100:/vol/vol2/test3
test4  netapp100:/vol/vol2/test4
test  netapp100:/vol/vol2/test

所以6楼的可能不行

5楼的不知道怎么执行 惭愧 赫赫

论坛徽章:
0
10 [报告]
发表于 2007-03-28 10:05 |只看该作者
:)

[ 本帖最后由 tnthb 于 2007-3-28 12:00 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP