Linux中使用命令将每个Chr开头的行的中间的行合并成一行Chr开头的行还是保持独立的一行Chr1ASCDJSVHUIDSHNGDUHVDVHJKSNUJKDFHDUDSNFJDNSFJJFHJSJKHFCLBHJHBVKLJXCHKJNGWJKEBFUEWBFUEWBUFLHDKJNVJCXHJVKNCXJVHKJXHCVKJXCHLVJCKXNCLBHJHBVKLJXCHKJNGWJKEBF
可以使用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中
原文地址: https://www.cveoy.top/t/topic/fogG 著作权归作者所有。请勿转载和采集!