【问题标题】:How to split a file on a particular pattern in UNIX如何在 UNIX 中以特定模式拆分文件
【发布时间】:2017-04-15 06:32:51
【问题描述】:

我有一个要求,我必须以下划线模式拆分文件,并将结果分组。

例如,

我的文件包含,

ADD1_5001AB
ADD1_5002AB
ADD1_5003BC
ADD2_5100XY
ADD2_5101YZ
CANC1_5200AB
CANC1_5201BC
CANC2_5301GH
CANC2_5302FG

所以我的结果应该有 4 个文件, 第一个文件应包含 ,

ADD1_5001AB
ADD1_5002AB
ADD1_5003BC

第二个文件应该包含,

ADD2_5100XY
ADD2_5101YZ

第三个文件应该包含,

CANC1_5200AB
CANC1_5201BC

第 4 个文件应包含,

CANC2_5301GH
CANC2_5302FG

请帮忙。

谢谢。

【问题讨论】:

    标签: unix awk sed split


    【解决方案1】:

    Awk 是一个很好的解决方案:

    awk -F"_" '{print $0 > $1}' infile.txt
    

    这将被下划线 (-F"_") 分割,并将每一行 (print $0) 打印到以下划线 (> $1) 之前的位命名的文件中。

    【讨论】:

    • 非常感谢 JNevill,它的工作方式正是我想要的。
    • 我还有一个问题。您还可以帮助我根据行号拆分同一个文件吗,即在下划线拆分后,它必须再次拆分为行号。在同一个 awk 命令中
    • 请提出一个新问题
    猜你喜欢
    • 2015-08-08
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    相关资源
    最近更新 更多