sed 将文件中的最后一行之后加上一句话

2014-11-21 17:30:35 +08:00
 sbmzhcn
sed -i "/$/a somewords“ file
可以在第段之后加上一句话,我想在文件中的最末尾加上一句话,并且是要换行再加上。
请问如何操作?

大家可以参考这个:
http://stackoverflow.com/questions/21195825/add-a-period-at-end-of-paragraph
4900 次点击
所在节点    Linux
13 条回复
q378648220
2014-11-21 17:35:59 +08:00
为什么不直接用echo 和 >> 追加在file后面呢。

echo -e '\nendline' >> test.txt
fising
2014-11-21 17:43:45 +08:00
@q378648220 哈哈因为他没想起来
oott123
2014-11-21 18:00:17 +08:00
@q378648220 说得好有道理…我刚刚还在想 awk …
rrfeng
2014-11-21 18:06:10 +08:00
sed -i "$a\nsomewords
" file

为什么不用 echo >> 哈哈哈
rrfeng
2014-11-21 18:09:04 +08:00
上面有问题,得用单引号!!$ 会被 bash 吃掉
sbmzhcn
2014-11-21 19:39:51 +08:00
@q378648220 @fising @oott123 没用echo是因为不想在控制台显示。文件也不一定存在,这是脚本中的一句,我测试的时候使用echo否符合我想要的结果。

sed -i "\$aTEXTAPPEND” file 解决。
msg7086
2014-11-21 21:01:01 +08:00
echo为什么会在控制台显示?
什么文件不一定存在?
sbmzhcn
2014-11-21 21:35:03 +08:00
@msg7086 echo 是显示到屏幕, 不是吗,有个sed可以解决,为什么一定要用echo. 这些功能是在一个脚本中的,这个脚本的功能需要这样做。
blacktulip
2014-11-21 22:01:58 +08:00
@sbmzhcn echo 缺省到 stdout ,用 >> 可以 redirect ,参见 http://sc.tamu.edu/help/general/unix/redirection.html

这种情况使用 echo 比较常见。
msg7086
2014-11-22 08:05:57 +08:00
@sbmzhcn 你完全说错了
1. echo只是把参数输送给1号文件描述符。如果你没有设定重定向,那么1号FD是指向STDOUT,然后是指向屏幕设备。如果设了重定向,那么1号FD就是你指定的文件了。
2. 应该说echo就能解决的问题,为什么要动用sed?前者是文件内容追加,后者是正则表达式匹配替换。
sbmzhcn
2014-11-22 12:22:30 +08:00
@msg7086 我用这是想改动现有文件,文件不一定存在。
@blacktulip 你说的对,是能用这实现,我有些也是用这实现的。
dant
2014-11-22 12:46:22 +08:00
@sbmzhcn [ -e filename ] && echo 'balabalab' >> filename
KentY
2014-11-26 05:57:41 +08:00
@oott123 awk 并不麻烦 awk '7;END{print "foo"}' file

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/148333

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX