[问题]请问sed可以获得编辑的文件名并插入文本中吗?

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
gbd
帖子: 33
注册时间: 2007-10-17 18:23

[问题]请问sed可以获得编辑的文件名并插入文本中吗?

#1

帖子 gbd » 2007-11-11 23:10

我有500个文本文件,我想在每个文件首行插入文件名,用sed可以吗?如果sed不能获取文件名,用什么可以实现呢?谢谢。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#2

帖子 eexpress » 2007-11-11 23:34

$0?
● 鸣学
头像
chattan
帖子: 3922
注册时间: 2007-07-11 20:59
联系:

#3

帖子 chattan » 2007-11-11 23:35

eexpress 写了:$0?
这是什么东东???
gbd
帖子: 33
注册时间: 2007-10-17 18:23

#4

帖子 gbd » 2007-11-11 23:48

2楼的兄弟可以说明白些吗?我对shell不熟悉,谢谢。
头像
chattan
帖子: 3922
注册时间: 2007-07-11 20:59
联系:

#5

帖子 chattan » 2007-11-11 23:51

他一直是这样!!!看来你要自己GOOGLE了!!
gbd
帖子: 33
注册时间: 2007-10-17 18:23

#6

帖子 gbd » 2007-11-12 0:27

google和baidu都失败了,烦哪位知道的兄弟告诉一声。
gbd
帖子: 33
注册时间: 2007-10-17 18:23

#7

帖子 gbd » 2007-11-12 9:46

自己顶下。。。。。 :cry: :cry:
vitacy
帖子: 133
注册时间: 2007-05-11 8:47
联系:

#8

帖子 vitacy » 2007-11-12 9:59

for i in `ls *.txt`;do echo $i >> $i;done
这个可以插到末行。
vitacy
帖子: 133
注册时间: 2007-05-11 8:47
联系:

#9

帖子 vitacy » 2007-11-12 10:05

如果 是行首的话,就不知道有没有什么命令了。不过可以这样
for i in `ls *.txt`;do echo $i > temp;cat $i >>temp;mv -f temp $i;done
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

#10

帖子 bones7456 » 2007-11-12 10:07

for i in `ls *.txt`;do cp $i tmp; echo $i > $i; cat tmp >> $i;done ; rm tmp


到行首就要这么搞一下了,呵呵.
关注我的blog: ε==3
头像
aitilang
帖子: 1026
注册时间: 2007-04-28 21:38

Re: [问题]请问sed可以获得编辑的文件名并插入文本中吗?

#11

帖子 aitilang » 2007-11-12 10:07

gbd 写了:我有500个文本文件,我想在每个文件首行插入文件名,用sed可以吗?如果sed不能获取文件名,用什么可以实现呢?谢谢。
gedit a.sh

代码: 全选

#!/bin/bash
for i in `ls -1 *.txt` ; do

    echo "$i" >> /tmp/tmp
    cat  $i  >> /tmp/tmp
    mv -v /tmp/tmp $i
    cat /dev/null > /tmp/tmp
done
rm -f /tmp/tmp

把这个文件跟那500个文件放在一起,执行就好了。
thinkpad x61 2G DDR no cdrom
--------------------------------------------
ABS学习中
sed学习中
awk学习中
perl学习中
新手描述不清,老手猜测不到,胡乱指挥一通,后果难以预料
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

#12

帖子 bones7456 » 2007-11-12 10:08

呃,慢了点,重复了,呵呵
关注我的blog: ε==3
gbd
帖子: 33
注册时间: 2007-10-17 18:23

#13

帖子 gbd » 2007-11-12 10:09

谢谢各位,我试试
头像
aitilang
帖子: 1026
注册时间: 2007-04-28 21:38

#14

帖子 aitilang » 2007-11-12 10:14

只能执行一次,执行第二次就会有重复行插入。。。。
我改改。。。

代码: 全选

#!/bin/bash
for i in `ls -1 *.txt` ; do

    if test `head -1 $i` == $i ; then
            continue;
    fi
    echo "$i" >> /tmp/tmp
    cat  $i  >> /tmp/tmp
    mv -v /tmp/tmp $i
    cat /dev/null > /tmp/tmp
done
rm -f /tmp/tmp
thinkpad x61 2G DDR no cdrom
--------------------------------------------
ABS学习中
sed学习中
awk学习中
perl学习中
新手描述不清,老手猜测不到,胡乱指挥一通,后果难以预料
gbd
帖子: 33
注册时间: 2007-10-17 18:23

#15

帖子 gbd » 2007-11-12 10:18

失败了: Permission denied
回复