LinuxSir.cn,穿越时空的Linuxsir!

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

将所有第一个字母为C的那一行提取出来成为一个新的文件??

[复制链接]
发表于 2002-10-29 17:44:43 | 显示全部楼层 |阅读模式
我有个文件,比较大,需要这样处理:将所有第一个字母为C的那一行提取出来成为一个新的文件,我想是不是可以用vi操作?或者grep?

我对这些都不熟悉,而现在又比较急,没有太多时间去查资料,希望兄弟们帮个忙
发表于 2002-10-29 18:12:47 | 显示全部楼层
awk '{ if(substr($0,0,1)=="C") print $0 }' file_name > newfile

grep ^C file_name > newfile
 楼主| 发表于 2002-10-29 20:29:31 | 显示全部楼层
我这么做后得到的文件什么也没有啊??两个命令都试过了````

可以确定文件里有许多以C开头的行。

是不是输入^C时有什么诀窍??我记得vi里面有个地方输入^时好像是几个键一起按的。
 楼主| 发表于 2002-10-29 21:10:44 | 显示全部楼层
呵呵,这么做就OK了,

cat inputfilename | grep C > outputfile
发表于 2002-10-30 09:22:47 | 显示全部楼层
"^C"表示首字符为“C”,你用grep C的结果肯定不对。
你的文件中是不是‘C’前有空格?
 楼主| 发表于 2002-10-30 17:21:09 | 显示全部楼层
是啊,有好几个空格的:)

真是高手

请问如果我要定位某一行的第几个字符该如何做呢?

其实我这里有很多关于处理文字的工作,都是机械的,有行的,有列的,特麻烦,我编程又没有学完,所以有点头疼。

请问可不可以给我指点一下关于字符处理的命令或软件,或者那里找到关于这些的中文说明文档,(我的时间不是很多,看中文的会快一些)

谢谢了
 楼主| 发表于 2002-10-30 17:40:19 | 显示全部楼层
我这里还有一个问题,两个文件比较,(它们的最后一列有序号)

文件1 -------------------- 文件2
.........1 ------------.........2
.........2 ------------.........4
.........3 ------------.........5
.........4
.........5
将文件1中序号与文件2中的序号相同的行提取出来,成一个新的文件

我想awk是不是可以实现这种功能呢,我这里没有它的资料

希望知道的怎么做兄弟可以给我提个醒,谢谢
发表于 2002-11-3 16:18:05 | 显示全部楼层
#!/bin/bash
#$FILENAME file1 file2
srclist="`cat $1`"
for i in $srclist; do
        sed -n "/${i##${i%%[1-9]}}$/"p $2
done

是不是太多了
我这个脚本接收file1和file2,将file1中序号与file2中的序号相同的file2的行打印
还是有很多的问题没有解决,比如序号不能大于9,序号合行之间不能或有或无空格

如果在序号和行之间有分割符就好办了,用awk可以解决

不知大家有没有更好的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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