LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 686|回复: 3

这个怎么遍历文件

[复制链接]
发表于 2009-10-26 12:00:19 | 显示全部楼层 |阅读模式
某机器的/home/cluster/Desktop/cardno.txt文件处理
编写bash脚本,提取卡号中带“23”,7,且最后一位为3或者7的卡号
生成两个文件 A.txt(提取出来卡号的文件),B.txt原来卡号去除提取后的卡号


cardno.tx内容的样本
966666433136497815
966666433136642014
966666433136860111
966666433137488912
966666433137552213
966666439002399019
966666443001837912
966666443006523112
966666443009672014
966666443010777612
966666443033346213
966666443057861411
966666443059765215
966666443083916410
966666443088225917
966666443091173715
966666443097312119
966666443119717519
966666443149733916
966666443149735417
966666443150465111
966666443150637510
966666443159435313
966666443161678817
966666443173548710
966666443176842812
966666443189498511
966666443189520711
966666443189526015
966666443189730517
966666443189942716
966666443217230712
966666443249961912
966666443250521912
966666443252241211
966666443258658210
966666443259650414
966666443267880515
966666443269213715
966666443280045212
966666443283650611
966666453000302313
 楼主| 发表于 2009-10-26 12:00:59 | 显示全部楼层
#!/bin/bash
while read line
do
echo"grep -E '%23%' &&  ‘%7%‘  &&  '[3,7]$'cardno.txt" >A.txt;
echo"grep -v -E  '%23%' &&  ‘%7%‘  &&  '[3,7]$'cardno.txt" >B.txt;
done
但不对阿--帮帮忙阿
回复 支持 反对

使用道具 举报

发表于 2009-10-29 10:38:20 | 显示全部楼层
  1. #!/bin/bash
  2. FILE=cardno.txt
  3. TMPFILE=card-tmp.txt
  4. TMPFILE1=card-1.txt
  5. TMPFILE2=card-2.txt
  6. sed -n -e "/23/p" $FILE >  $TMPFILE1
  7. sed -n -e "/7/p" $FILE >  $TMPFILE2
  8. # merge and
  9. sort -m $TMPFILE1 $TMPFILE2 | uniq > $TMPFILE
  10. rm $TMPFILE1 $TMPFILE2
  11. # this is output, you can redirect to other file
  12. cat $TMPFILE | grep -e "\(3\|7\)\>"  > A.txt
  13. rm $TMPFILE
复制代码
回复 支持 反对

使用道具 举报

发表于 2009-10-29 23:48:40 | 显示全部楼层
  1. grep "23[0-9]*7[0-9]*[37]$\|7[0-9]*23[0-9]*[37]$" cardno.txt
复制代码
但是没有匹配,是不是你的逻辑描述有问题?
“23”,7
这个逗号是与还是或?我上面的正则是按‘与’处理的,看你的数据里的确是没有匹配。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表