Linux中将Chr开头的行中间的各行合并成一行Chr开头的行保持不变如果并且将最后一个Chr开头的行下面的各行合并成一行最后一个Chr开头的行保持不变Chr1ASCDJSVHUIDSHNGDUHVDVHJKSNUJKDFHDUDSNFJDNSFJJFHJSJKHFChrtestDXVXKJCVBHKXCBVKJBNSJEHFUSHDBNJKBGSHBGKJSBDGKJBSDKFCNJLKHNLJ
可以使用sed命令来实现:
sed -n '/^Chr/{:start /^Chr/{p;b};N;b start};$p' 文件名
解释一下:
- -n选项表示只输出匹配到的行,不输出其他行;
- /^Chr/表示匹配以Chr开头的行;
- {:start ...}表示一个循环,start是一个标签,用于后面跳转;
- /^Chr/{p;b}表示如果匹配到以Chr开头的行,则输出该行,然后跳转到循环结束(即最后一个Chr开头的行);
- N;b start表示将非Chr开头的行和前面的Chr开头的行合并成一行,并跳转到循环开始继续执行;
- $p表示最后一个Chr开头的行单独处理,直接输出;
注意:由于Linux中换行符是\n,因此合并后的行可能会很长,建议使用less命令或者分页工具查看。
原文地址: http://www.cveoy.top/t/topic/foga 著作权归作者所有。请勿转载和采集!