sed replace empty line with character

前端 未结 5 1608
庸人自扰
庸人自扰 2021-01-15 02:31

How do you replace a blank line in a file with a certain character using sed?

I have used the following command but it still returns the original input:



        
相关标签:
5条回答
  • 2021-01-15 02:54

    You may have tabs or white spaces in your filename' empty lines, try the following:

    sed 's/^\s*$/>/' filename
    
    0 讨论(0)
  • 2021-01-15 02:58

    You may have whitespace in your input. First thing to try is:

    sed 's/^[[:blank:]]*$/>/' filename
    
    0 讨论(0)
  • 2021-01-15 02:59

    The following code should work:

    sed -i  's/^[[:space:]]*$/string/' foo
    
    0 讨论(0)
  • 2021-01-15 03:09

    What's missing here is the escape character. This will work for you.

    sed 's/^$/\>/g' filename
    

    And if you need to delete the empty lines and print others, Try

    sed '/^$/d' filename
    
    0 讨论(0)
  • 2021-01-15 03:11

    Here is a way with awk. This wouldn't care if you have spaces or blank lines:

    awk '!NF{$0=">"}1' file
    

    NF stands for number of fields. Since blank lines or lines with just spaces have no fields, we use that to insert your text. 1 triggers the condition to be true and prints the line:

    Test:

    $ cat -vet file
    ACTCTATCATC$
          $
    CTACTATCTATCC$
    $
    CCATCATCTACTC$
           $
    

    $ are end of line markers

    $ awk '!NF{$0=">"}1' file
    ACTCTATCATC
    >
    CTACTATCTATCC
    >
    CCATCATCTACTC
    >
    
    0 讨论(0)
提交回复
热议问题