我的文件名为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
但添加行后它不会返回新行。 请帮帮我。
答案 0 :(得分:2)
使用sed
,在匹配后追加(a
)所需的部分(此处我在该行的末尾匹配< 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
答案 1 :(得分:1)
在OSX上,您可以使用此sed
命令:
sed -i.bak '/ApplicationRecord$/,/^end$/{/end$/i\
include Company
}' file