sed用字符替换空行

时间:2014-03-08 01:12:35

标签: bash sed awk

如何使用sed替换具有特定字符的文件中的空白行?

我使用了以下命令,但它仍然返回原始输入:

sed 's/^$/>/' filename

原始输入:

ACTCTATCATC

CTACTATCTATCC

CCATCATCTACTC

...

期望的输出:

ACTCTATCATC
>
CTACTATCTATCC
>
CCATCATCTACTC
>
...

感谢您的帮助

5 个答案:

答案 0 :(得分:3)

以下是awk的方法。如果您有空格或空行,则无关紧要:

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

NF代表字段数。由于空行或只有空格的行没有字段,我们使用它来插入文本。 1触发条件为true并打印行:

<强>测试

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

$是行尾标记

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

答案 1 :(得分:1)

您的输入中可能有空格。首先要尝试的是:

sed 's/^[[:blank:]]*$/>/' filename

答案 2 :(得分:1)

您的filename'空行中可能有标签或空格,请尝试以下操作:

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

答案 3 :(得分:0)

以下代码应该起作用:

sed -i  's/^[[:space:]]*$/string/' foo

答案 4 :(得分:0)

这里缺少转义字符。这将为您工作。

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

如果您需要删除空行并打印其他行,请尝试

sed '/^$/d' filename