LinuxSir.cn,穿越时空的Linuxsir!

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

如何在每个文件的第二行增加一行新内容?

[复制链接]
发表于 2009-9-20 09:05:08 | 显示全部楼层 |阅读模式
大约有几百个文件,想在每个文件的第二行都增加一行相同的内容,用shell如何操作?
发表于 2009-9-20 15:30:54 | 显示全部楼层
awk and for loop may can do it.

here is a awk example
  1. cunzhang@Debian:~$ cat a
  2. 1 2 3
  3. 4 5 7
  4. cunzhang@Debian:~$ awk '{$2=$2" abc ";print}' a
  5. 1 2 abc  3
  6. 4 5 abc  7
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-20 15:57:50 | 显示全部楼层
谢谢,我用sed做的。
sed '1anewline' aa > bb
回复 支持 反对

使用道具 举报

发表于 2009-9-20 20:23:08 | 显示全部楼层
用sed或者awk会不会效率太低?
如果用head,tail和wc做会不会快点呢?
回复 支持 反对

使用道具 举报

发表于 2009-9-21 12:43:43 | 显示全部楼层
Post by gaosboy;2028594
用sed或者awk会不会效率太低?
如果用head,tail和wc做会不会快点呢?


请问楼上的,该如何比较他们的效率呢??

有怎么用head,tail,wc呢?

num=`wc -l filename`
head  -1  filename > temp
echo "content" >> temp
tail  -$(( num - 1 ))  filename >> temp

??????
回复 支持 反对

使用道具 举报

发表于 2009-9-22 12:21:00 | 显示全部楼层
我觉得sed 擅长干这个活
for name in *.txt
do
sed -i '1atest' "$name"
done
回复 支持 反对

使用道具 举报

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

本版积分规则

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