LinuxSir.cn,穿越时空的Linuxsir!

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

请教:用shell的什么命令 能 在文件的指定位置 插入 语句?

[复制链接]
发表于 2006-6-7 15:09:53 | 显示全部楼层 |阅读模式
我有100个文件夹
这100个文件夹,每个里面都有一个叫pat.txt的文件
每个pat.txt文件里都有一句相同的话:c.write(`set,0);
我现在想在每个文件的 “c.write(`set,0); ” 这句话后面加一句话:
c.write(`sc,0);

初学shell
请大家多指教~!!多谢多谢!!
发表于 2006-6-7 15:21:30 | 显示全部楼层
Post by stefw
我有100个文件夹
这100个文件夹,每个里面都有一个叫pat.txt的文件
每个pat.txt文件里都有一句相同的话:c.write(`set,0);
我现在想在每个文件的 “c.write(`set,0); ” 这句话后面加一句话:
c.write(`sc,0);

初学shell
请大家多指教~!!多谢多谢!!


假设你的100个文件夹放在一个目录(/a/directory)下,没有其他的目录或文件:
mkdir output
for dir in /a/directory/*
do
    newdir=output/$(basename $dir)
    mkdir newdir
    sed 's/^c.write(`set,0);$/c.write(`set,0);\nc.write(`sc,0);/' $dir/pat.txt > newdir/pat.txt
done

输出到output的目录下了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-7 16:10:54 | 显示全部楼层
Post by kiron
假设你的100个文件夹放在一个目录(/a/directory)下,没有其他的目录或文件:
mkdir output
for dir in /a/directory/*:
do
    newdir=output/$(basename $dir)
    mkdir newdir
    sed 's/^c.write(`set,0);$/c.write(`set,0);\nc.write(`sc,0);/' $dir/pat.txt > newdir/pat.txt
done

输出到output的目录下了。



所有的pat.txt都在$TName  下
我基本是按照您说得写的:

sed  's/^c.write(`set,0);$/c.write(`set,0);\nc.write(`sc,0);/' $TName /cpu.pat > $TName /cpu.pat

可是出现的错误提示是
line 10: syntax error near unexpected token `)'

是怎么回事呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-9 09:33:44 | 显示全部楼层
sed 's/^c.write(`set,0);$/c.write(`set,0);\nc.write(`sc,0);/' $TName /cpu.pat > $newdir /cpu.pat

这句命令中,,如果在原来得文件$TName /cpu.pat  中得 这句话 c.write(`set,0); 之后有空格,,那这句命令最终执行得结果就是 在 $newdir /cpu.pat 没有添加任何语句,,只是把原来得 $TName /cpu.pat  的内容拷贝了  过来

但是现在我自己都不是很确定在 $TName /cpu.pat  中的  c.write(`set,0); 之后有没有空格,,主要是文件有上百个,,我也不可能一个个检查

大牛指点下应该怎么做呢?谢谢谢谢!!!!
回复 支持 反对

使用道具 举报

发表于 2006-6-9 22:27:31 | 显示全部楼层
sed 's/^c.write(`set,0);\ *$/c.write(`set,0);\nc.write(`sc,0);/' $TName /cpu.pat > $newdir /cpu.pat
回复 支持 反对

使用道具 举报

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

本版积分规则

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