BBS.ChinaUnix.net
首页 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  会员: 密码: 免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


我写的SED为什么不能达到目的(在线等,,)

首页 » 论坛 » Shell »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
totolinux
新手




UID:113720
注册:2003-11-21
最后登录: 2003-11-21
帖子:1
精华:0

可用积分:11 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


1楼 发表于 2003-11-21 11:47 
原文件为:
第一行:新A分店-订货单     |0109-20031117-05006 |0001|20031117|20031121|广州市白云区广花三路85#                          |510665|新A分店            |                    |                    |厦门银鹭食品有限公司                    |10540210|020-34030236        |胡隼      |                                       
第二行:新A分店-订货单     |0109-20031117-05007 |0001|20031117|20031124|广州市白云区广花北路55#                          |510665|新A分店            |                    |                    |广州市华记昌盛贸易有限公司              |10554510|82382609            |张永华    |                                       
第三行:新A分店-订货单     |0109-20031117-05013 |0001|20031117|20031120|广州市白云区广花F路59#                          |510665|新A分店            |                    |                    |广州市万年红食品有限公司                |10557010|020-86051170        |钟梓玮    |                                       
第N行。。。。                           


从键盘上输入二个数,分别READ入。在上面文件中的每一行中的第二域中找到后4位相同的则把此行 > 到一个新文件中。如输入  :5006,5007则可把上面文件中的其中二行符合条件的>到newfile,我是这样写的,但得不到结果:

#!/bin/sh
echo -e -n "\t 起始号:[Enter:]"
read Begno
echo -e -n "\t 终止号:[Enter:]"
read Endno

if [ ${Begno} -lt ${Endno} ]
then
     sed -n "/^.\{35\}${Begno}/,/^.\{35\}${Endno}/p" file1.txt > newfile.txt
else
     echo "输入有误!"
fi
cat  newfile
或把:sed -n "/^.\{35\}${Begno}/,/^.\{35\}${Endno}/p" file1.txt > newfile.txt
修改成:
代码:
awk  "/${Begno}/,/${Endno}/" file1.txt  > newfile
也得不到结果!!



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
ppxp
精灵




UID:68302
注册:2003-7-9
最后登录: 2008-07-25
帖子:172
精华:0

可用积分:180 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


2楼 发表于 2003-11-21 12:26 
我写的SED为什么不能达到目的(在线等,,)

不明白你是要一段范围还是一点
就是 0001~0010之间还是只要0001和0019
如果是点的话awk可以轻松搞定,
如果是段的话awk就要麻烦一点点。


awk 'substr($2,3,length($2)-2)=05006 {print}'
这是一个例子,具体你再调一调。



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
soopy_linux   帅哥
骑士



UID:111330
注册:2003-11-12
最后登录: 2004-08-18
帖子:60
精华:0

可用积分:17 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


3楼 发表于 2003-11-21 14:05 
我写的SED为什么不能达到目的(在线等,,)

:oops:



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

Free
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
admirer   帅哥  爱心使者2003 (admirer)
荣誉版主-精灵使




荣誉版主  
UID:7866
注册:2002-4-30
最后登录: 2007-03-20
帖子:4436
精华:10

可用积分:4489 (小富即安)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

来自:西北小镇
状态:...离线...

[个人空间] [短信] [博客]


4楼 发表于 2003-11-21 14:18 
我写的SED为什么不能达到目的(在线等,,)



awk -F"|" -v A=${Begno} -v B=${Endno} '{split($2,K,"-");if((K[3]>=A)&&(K[3]<=B))print}'




您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
yy_yangy
精灵



UID:66004
注册:2003-6-26
最后登录: 2004-05-21
帖子:175
精华:0

可用积分:186 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...保密...

[个人空间] [短信] [博客]


5楼 发表于 2003-11-21 14:29 
我写的SED为什么不能达到目的(在线等,,)

awk 'BEGIN{FS="|";OFS="|"}'
{
     section=substr($2,length($2)-3,4);
     if(section>=5007&&section<=5009){
          print >"new_file.txt"
     }
}



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
john_student   帅哥
光明使者




UID:105853
注册:2003-10-17
最后登录: 2008-07-05
帖子:702
精华:0

可用积分:709 (稍有积蓄)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


6楼 发表于 2003-11-21 20:57 
我写的SED为什么不能达到目的(在线等,,)

第2域的后4位?
还是固定位置在35列之后?

描述不清呀!



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

学海无涯哎!
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
灿烂小猪
精灵王



UID:522225
注册:2007-1-25
最后登录: 2008-10-07
帖子:330
精华:0

可用积分:463 (白手起家)
信誉积分:100
专家积分:10 (本版:10)
空间积分:0
推广积分:0

来自:大连
状态:...离线...

[个人空间] [短信] [博客]


7楼 发表于 2008-7-3 16:18 
BEGIN{
        FS="|"
        printf "Please type First ID:"
        getline num_1 < "/dev/tty"
        printf "Please type Second ID:"
        getline num_2 < "/dev/tty"
}

{
match($2,/[0-9]+ $/)
}
num_1 == substr($2,RSTART+1,RLENGTH-2),num_2 == substr($2,RSTART+1,RLENGTH-2){print}



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

CentOS release 4.4 (Final)
GNU bash, version 3.00.15(1)-release (i686-redhat-linux-gnu)
GNU Awk 3.1.3
GNU sed version 4.1.2
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?

首页 » 论坛 » Shell »


 


Copyright © 2001-2008 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

Processed in 0.084080 second(s), 4 queries , Gzip enabled