【发布时间】:2020-06-12 23:17:37
【问题描述】:
我有一个如下所示的文本文件:
>long_name
AAC-TGA
>long_name2
CCTGGAA
还有一个列号列表:2, 4, 7。当然,我可以将这些作为变量,例如:
cols="2 4 7"
我需要将不以> 开头的行的每一列替换为单个字符,例如N,以得到:
>long_name
ANCNTGN
>long_name2
CNTNGAN
其他详细信息 - 该文件有大约 200K 行。所有不以> 开头的行都是相同的长度。行索引永远不会超过非> 行的长度。
在我看来,sed 和 awk 的某种组合必须能够快速完成此操作,但我终其一生都无法弄清楚如何将它们链接在一起。
例如我可以使用 sed 处理所有不以 > 开头的行(在这种情况下,用 N 替换所有空格):
sed -i.bak '/^[^>]/s/ /N/g' input.txt
而且我可以使用 AWK 来替换特定的行列,因为我想要这样(我认为...):
awk '$2=N'
但我正在努力将它缝合在一起
【问题讨论】:
-
在使用 awk 时永远不需要 sed。