sed insert line command OSX

前端 未结 7 2145
太阳男子
太阳男子 2020-12-16 14:02

I\'m trying to insert text to the third line in a file using sed, and the syntax I\'ve found on other forums is:

sed -i \'\' \"3i\\ text to insert\" file


        
相关标签:
7条回答
  • 2020-12-16 14:26

    This works for me

    sed -i '' '3i\
    text to insert' file 
    
    0 讨论(0)
  • 2020-12-16 14:30

    I've found that I have to insert a \ at the end of the line to be inserted, otherwise it concatenates it at the beginning of the original line. So, if I want to insert a new third line,...

    sed -i '' '3i\<br>
    New line to be inserted.\<br>
    ' file
    
    0 讨论(0)
  • 2020-12-16 14:32

    If you want to modify a file of specific file type(.sh in my case) use this command.

    sed -i '.sh' '3i\
    mymodified text to insert' temp.sh
    

    Make sure you have line break after slash ("\")

    0 讨论(0)
  • 2020-12-16 14:36

    A one-liner for OSX employing ANSI-C quoting:

    sed -i '' '3i\'$'\n''text to insert' file
    

    Adapted from https://stackoverflow.com/a/24299845/901597

    0 讨论(0)
  • 2020-12-16 14:41

    You should put a newline directly after the \:

    sed '3i\
    text to insert' file
    

    This is actually the behaviour defined by the POSIX specification. The fact that GNU sed allows you to specify the text to be inserted on the same line is an extension.


    If for some reason you need to use double quotes around the sed command, then you must escape the backslash at the end of the first line:

    sed "3i\\
    text to insert" file
    

    This is because a double-quoted string is processed first by the shell, and \ followed by a newline is removed:

    $ echo "abc\
    def"
    abcdef
    
    0 讨论(0)
  • 2020-12-16 14:44

    On OSX you can use:

    sed -i.bak '3i\
    text to insert
    ' file
    
    0 讨论(0)
提交回复
热议问题