嗨,我正在尝试使用sed将文本添加到文件的第一行
到目前为止,我尝试过

#!/bin/bash
touch test
sed -i -e '1i/etc/example/live/example.com/fullchain.pem;\' test

这不起作用
也尝试过
#!/bin/bash
touch test
sed -i "1i ssl_certificate /etc/example/live/example.com/fullchain.pem;" test

这似乎也不起作用
奇怪的是,当我尝试
#!/bin/bash
touch test
echo "ssl_certificate /etc/example/live/example.com/fullchain.pem;" > test

使用cat test时出现第一行文本
但是只要我输入sed -i "2i ssl_certificate_key /etc/example/live/example.com/privkey.pem;"我看不到我在第2行上得到的信息,这是ssl_certificate_key/etc/example/live/example.com/privkey.pem;

所以我的问题要总结
  • 可以使用sed将文本插入到新创建的文件的第一行吗?
  • 如果是,在第一行文本之后插入文本的最佳方法是什么?
  • 最佳答案

    假设您有一个类似file的代码:

    one
    two
    

    然后追加到第一行:
    $ sed '1 s_$_/etc/example/live/example.com/fullchain.pem;_' file
    one/etc/example/live/example.com/fullchain.pem;
    two
    

    要在第一行之前插入:
    $ sed '1 i /etc/example/live/example.com/fullchain.pem;' file
    /etc/example/live/example.com/fullchain.pem;
    one
    two
    

    或者,在第一行之后追加:
    $ sed '1 a /etc/example/live/example.com/fullchain.pem;' file
    one
    /etc/example/live/example.com/fullchain.pem;
    two
    

    注意这些1表达式中的数字sed-在sed术语中称为the address。它告诉您接下来要在哪一行 the command上进行操作。

    如果您的文件不包含您要寻址的行,则不会执行sed命令。这就是为什么如果文件为空,则无法在第1行插入/附加的原因。

    无需使用流编辑器来追加(到空文件),只需使用shell重定向>>即可:
    echo "content" >> file
    

    关于linux - 如何使用sed将文本插入文件的第一行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44894652/

    10-14 19:43
    查看更多