根据第一列值将一个文件拆分为多个文件

根据第一列值将一个文件拆分为多个文件

我已经看到了关于模式匹配和行匹配分割文件的解决方案,但我想要的是以下内容。场景是,假设我有一个文件file1 -

A.B|100|20
A.B|101|20
A.X|101|30
A.X|1000|20
B.Y|1|1

现在我想根据第一列将此文件拆分为 3 个不同的文件,其中第一个文件将是A.B第一列中包含的所有行,第二个文件应包含所有行,依此A.X类推。

如果第一列发生变化反正,应该为这些行创建一个新文件。有什么方法可以用bash or来做到这一点awk吗?

由于无法事先实际知道第一列的值是什么,因此我无法使用任何类似splitor 的功能cut。我在这里先向您的帮助表示感谢!

答案1

尝试:

awk -F\| '{print>$1}' file1

这会将每一行写入以第一列命名的文件中。

怎么运行的:

  • -F\|将字段分隔符设置为|

  • print>$1将当前行打印到名称为第一个字段的文件中。

相关内容