可以使用awk命令实现此任务,具体命令如下:

awk '/^Chr/{if (seq != "") print seq; print; seq = ""} /^Chr/ {next} {seq = seq$0} END {if (seq != "") print seq}' input.txt > output.txt

解释一下这个命令:

  • awk是一个文本处理工具,它将输入的文本分割成一个个记录,并对每个记录进行特定的处理。
  • /^Chr/是一个正则表达式,表示以Chr开头的行。
  • {if (seq != "") print seq; print; seq = ""}是一个代码块,表示如果前面的记录不是以Chr开头的行,则将该行合并到前面的记录中;否则,输出前面的记录,然后输出当前的行,最后清空记录变量seq
  • /^Chr/ {next}是另一个代码块,表示如果当前的行是以Chr开头的行,则跳过该行,不做处理。
  • {seq = seq$0}是一个代码块,表示将当前的行追加到记录变量seq的末尾。
  • END {if (seq != "") print seq}是最后一个代码块,表示在处理完所有的记录后,如果记录变量seq不为空,则输出最后一个记录。

将上述命令中的input.txt替换为需要处理的文件名,输出结果会保存到output.txt

Linux中使用命令将每个Chr开头的行的中间的行合并成一行Chr开头的行还是保持独立的一行Chr1ASCDJSVHUIDSHNGDUHVDVHJKSNUJKDFHDUDSNFJDNSFJJFHJSJKHFCLBHJHBVKLJXCHKJNGWJKEBFUEWBFUEWBUFLHDKJNVJCXHJVKNCXJVHKJXHCVKJXCHLVJCKXNCLBHJHBVKLJXCHKJNGWJKEBF

原文地址: https://www.cveoy.top/t/topic/fogG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录