【问题标题】:shell adding multiple lines within the middle of a fileshell 在文件中间添加多行
【发布时间】:2014-01-20 18:16:09
【问题描述】:

我只是想知道在文件中添加多行的最佳方法是什么。 IE。我想替换文件中的标签,即 /#tag

多行,比如 3

echo "line 1"
echo "line 2"
echo "line 3"

我知道我可以读取文件的每一行,如果遇到标签可以将新行通过管道传输到文件,但是,由于文件的大小,这需要太长时间。

我确定一定有更好的方法吗?

【问题讨论】:

  • 没有快速的方法可以做到这一点,基本上整个文件都必须重写。
  • 文件大小是多少?您是否确切知道新行应该去哪里(例如行号),或者您是否需要阅读每一行并确定插入行的位置?
  • 我不知道标签将在哪一行,但我知道标签的格式 - 认为可能可以 grep 为标签然后插入?

标签: string bash shell cat


【解决方案1】:

只需使用sed:

sed -i 's:/#tag:line 1\nline 2\nline 3:' file

s 命令只是“替代”,通常分隔符是/,但由于它在标签中,我们可以使用: 代替。如果您以前从未使用过sed,请参阅http://www.grymoire.com/unix/sed.html/#tag 可以是正则表达式,就像 grep 一样。

【讨论】:

    猜你喜欢
    • 2010-10-15
    • 2012-06-12
    • 2014-02-27
    • 2010-10-04
    • 1970-01-01
    • 2013-04-28
    • 2020-07-12
    • 2017-09-11
    • 2018-06-21
    相关资源
    最近更新 更多