V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
sbmzhcn
V2EX  ›  Linux

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

  •  
  •   sbmzhcn · 2014-11-21 17:30:35 +08:00 · 4903 次点击
    这是一个创建于 3656 天前的主题,其中的信息可能已经有所发展或是发生改变。
    sed -i "/$/a somewords“ file
    可以在第段之后加上一句话,我想在文件中的最末尾加上一句话,并且是要换行再加上。
    请问如何操作?

    大家可以参考这个:
    http://stackoverflow.com/questions/21195825/add-a-period-at-end-of-paragraph
    13 条回复    2014-11-26 05:57:41 +08:00
    q378648220
        1
    q378648220  
       2014-11-21 17:35:59 +08:00   ❤️ 2
    为什么不直接用echo 和 >> 追加在file后面呢。

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

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

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

    这种情况使用 echo 比较常见。
    msg7086
        10
    msg7086  
       2014-11-22 08:05:57 +08:00
    @sbmzhcn 你完全说错了
    1. echo只是把参数输送给1号文件描述符。如果你没有设定重定向,那么1号FD是指向STDOUT,然后是指向屏幕设备。如果设了重定向,那么1号FD就是你指定的文件了。
    2. 应该说echo就能解决的问题,为什么要动用sed?前者是文件内容追加,后者是正则表达式匹配替换。
    sbmzhcn
        11
    sbmzhcn  
    OP
       2014-11-22 12:22:30 +08:00
    @msg7086 我用这是想改动现有文件,文件不一定存在。
    @blacktulip 你说的对,是能用这实现,我有些也是用这实现的。
    dant
        12
    dant  
       2014-11-22 12:46:22 +08:00 via iPhone
    @sbmzhcn [ -e filename ] && echo 'balabalab' >> filename
    KentY
        13
    KentY  
       2014-11-26 05:57:41 +08:00
    @oott123 awk 并不麻烦 awk '7;END{print "foo"}' file
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6033 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:19 · PVG 14:19 · LAX 22:19 · JFK 01:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.