linux - 如何拆分unix文件中的数据

标签 linux unix awk sed grep

我在 Unix (solaris) 系统中有一个文件,其中包含如下数据

[TYPEA]:/home/typeb/file1.dat
[TYPEB]:/home/typeb/file2.dat
[TYPEB]:/home/typeb/file3.dat
[TYPE_C]:/home/type_d/file4.dat
[TYPE_C]:/home/type_d/file5.dat
[TYPE_C]:/home/type_d/file6.dat

我想像下面这样分隔标题

[TYPEA]
/home/typeb/file1.dat
[TYPEB]
/home/typeb/file2.dat
/home/typeb/file3.dat
[TYPE_C]
/home/type_d/file4.dat
/home/type_d/file5.dat
/home/type_d/file6.dat

具有相似类型的文件必须属于一种类型。 请用任何逻辑帮助我实现这一点,而无需硬编码。

最佳答案

假设输入像您的示例一样按类型排序,

awk -F : '$1 != prev { print $1 } { print $2; prev=$1 }' file

如果有超过 2 个字段,您将需要调整第二个子句。

关于linux - 如何拆分unix文件中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28185531/

相关文章:

c - 启动时端口错误 (recvfrom)

linux - 如何使用列表生成配置文件

ios - Cocoapods - 无法找到 [Github 框架] 的规范

c++ - 如何在不解压缩的情况下创建并附加到 gz 文件?

unix - 编译minix需要多长时间?

if-statement - awk if 具有多个条件会引发错误

linux - 从 shell 中清理文件

c++ - 这种关于 seekp 的看似奇怪的行为是否正确?

python - 比较两个 CSV 文件的列并删除差异

linux - 使用来自 Traceroute 输出的 shell 脚本从文件中提取并查找最小值、最大值和平均值的脚本