【问题标题】:Add a line in between two lines in a file from bash在 bash 文件的两行之间添加一行
【发布时间】:2017-05-22 19:42:22
【问题描述】:

我有一个名为 user.rb 的文件,如下所示:

class User < ApplicationRecord
end

我想添加一个新行,添加行后它会看起来:

class User < ApplicationRecord
  include Company
end

但我想从 bash 脚本或终端添加这一附加行。 我用这个 bash 代码试了一下:

sed -i '' 's/end/include Company\n\end/' app/models/user.rb

但添加行后不返回新行。 请帮帮我。

【问题讨论】:

    标签: bash macos search replace sed


    【解决方案1】:

    使用sed,在匹配后附加(a)所需的部分(这里我在行尾匹配&lt; ApplicationRecord):

    sed '/<[[:blank:]]*ApplicationRecord$/a\    include Company' file.rb
    

    使用以.bak 扩展名备份的原始文件就地编辑文件:

    sed -i.bak '/<[[:blank:]]*ApplicationRecord$/a\    include Company' file.rb
    

    没有任何备份:

    sed -i '' '/<[[:blank:]]*ApplicationRecord$/a\    include Company' file.rb
    

    示例:

    $ cat file.rb 
    class User < ApplicationRecord
    end
    
    $ sed '/<[[:blank:]]*ApplicationRecord$/a\    include Company' file.rb 
    class User < ApplicationRecord
        include Company
    end
    

    【讨论】:

      【解决方案2】:

      在 OSX 上,您可以使用此 sed 命令:

      sed -i.bak '/ApplicationRecord$/,/^end$/{/end$/i\
      include Company
      }' file
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-08
        • 2016-04-27
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多