LinuxSir.cn,穿越时空的Linuxsir!

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

Bash脚本中,如何将一段文字写入到指定文件的指定行之后

[复制链接]
发表于 2005-6-9 16:12:59 | 显示全部楼层 |阅读模式
例如:
我要将下列文字:
Line 1
Line 2
Line 3
写入文件 somefile 的第五行以后,如何用Bash脚本实现呢?
谢谢了
发表于 2005-6-9 16:44:22 | 显示全部楼层
  1. sed '5a\Line\ 1\nLine\ 2\nLine\ 3' somefile
复制代码
回复 支持 反对

使用道具 举报

发表于 2005-6-9 16:44:35 | 显示全部楼层
awk '{print} NR==5 {print "Line 1\n" "Line 2\n" "Line 3"}' somefile >newsomefile
mv newsomefile somefile
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-9 16:47:27 | 显示全部楼层
Thx very mush
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-9 16:50:46 | 显示全部楼层
to zhy2111314 :
但是\n换行没有效
回复 支持 反对

使用道具 举报

发表于 2005-6-9 17:15:58 | 显示全部楼层
Post by sxzzsf
to zhy2111314 :
但是\n换行没有效

sed的版本不够新吧?
试试把n换成回车(按回车键)
回复 支持 反对

使用道具 举报

发表于 2005-6-9 18:36:51 | 显示全部楼层
那怎么样把文件里面的一个字符串替换呢?
t.txt
[php]
1
2
3
4
5
6
[/php]
把2替换成two
回复 支持 反对

使用道具 举报

发表于 2005-6-9 21:39:17 | 显示全部楼层
你的意思是
  1. sed 's/2/two/g' file
复制代码
回复 支持 反对

使用道具 举报

发表于 2005-6-10 21:31:29 | 显示全部楼层
个人感觉sed,awk这些东西都比较复杂但功能比较强
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-13 08:16:57 | 显示全部楼层
在我的Slackware上,sed如下使用成功了

sed "${LINENUM}a\xxxxx
        ${LINENUM}a\yyyyy
        ${LINENUM}a\zzzzz" somefile > somefile.new
回复 支持 反对

使用道具 举报

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

本版积分规则

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