如何使用sed替换具有特定字符的文件中的空白行?
我使用了以下命令,但它仍然返回原始输入:
sed 's/^$/>/' filename
原始输入:
ACTCTATCATC
CTACTATCTATCC
CCATCATCTACTC
...
期望的输出:
ACTCTATCATC
>
CTACTATCTATCC
>
CCATCATCTACTC
>
...
感谢您的帮助
答案 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