如何用Bash脚本按@target G0.S0拆分数据并合并为多列输出文件?
解决方案:按分隔符拆分数据块并拼接对应行
可以用awk命令快速实现这个需求,一行命令就能搞定:
awk '/^@target/ {block++ ; next} {lines[NR - block] = lines[NR - block] " " $0} END {for (i in lines) print lines[i]}' file1.txt > file2.txt
命令逻辑说明:
- 匹配以
@target开头的分隔符行时,增加计数器block并跳过当前行,不参与后续拼接 - 对于普通数据行,计算它在所属数据块中的相对行号(总行数
NR减去已遇到的分隔符行数block),将当前行内容追加到对应行号的数组元素末尾 - 处理完所有行后,遍历数组输出每一行,就是各数据块对应行拼接后的结果
运行上述命令后,生成的file2.txt就会完全符合你想要的格式。
内容的提问来源于stack exchange,提问作者Youca
相关产品推荐
相关产品推荐

