What does sed -i option do?

后端 未结 3 1226
长情又很酷
长情又很酷 2021-02-06 21:19

I\'m debugging a shell script and trying to find out the task performed by the following command:

sed -i \'1,+999d\' /home/org_user/data.txt

I

相关标签:
3条回答
  • 2021-02-06 21:46

    Some implementations of sed do not support the -i option. What it does can be simulated by

    sed -e '...' file > tmp
    mv tmp file
    
    0 讨论(0)
  • 2021-02-06 21:51

    An applicable use of this is as follows. Say you have the following file file.txt:

    1, 2, 6, 7, "p" 
    

    We want to replace "p" with 0.

    sed 's/"p"/0/g' file.txt
    

    Using the above simply prints the output into command line.

    You'd think why not just redirect that text back into the file like this:

    sed 's/"p"/0/g' file.txt > file.txt
    

    Unfortunately because of the nature of redirects the above will simply produce a blank file.

    Instead a temp file must be created for the output which later overwrites the original file something like this:

    sed 's/"p"/0/g' file.txt > tmp.txt && mv tmp.txt file.txt
    

    Instead of doing the long workaround above sed edit in place option with -i allows for a much simpler command:

    sed -i 's/"p"/0/g' file.txt
    
    0 讨论(0)
  • 2021-02-06 22:00

    If -i option given, sed edit files in place.

       -i[SUFFIX], --in-place[=SUFFIX]
    
              edit files in place (makes backup if extension supplied)
    

    from sed(1)

    http://www.gnu.org/software/sed/manual/sed.html#Introduction

    0 讨论(0)
提交回复
热议问题