代码之家  ›  专栏  ›  技术社区  ›  Julien Grenier

如何基于令牌拆分文件?

  •  1
  • Julien Grenier  · 技术社区  · 17 年前

    假设您有一个包含文本(从1到N)的文件,文本之间用$


    text2美元等$
    文本

    我正在考虑使用awk或sed,但是否有任何可用的unix应用程序已经执行了此类任务?

    5 回复  |  直到 17 年前
        1
  •  3
  •   Julien Grenier    16 年前

    awk'BEGIN{RS=“$”;ORS=“}{textNumber++;print$0>“text”textNumber.out“}”文件名

    感谢比尔·卡温的创意。

    编辑:添加ORS=“”,以避免在每个文件末尾打印换行符。

        2
  •  2
  •   Bill Karwin    17 年前

    大概 split -p 图案 ?

    嗯,那可能不是你想要的。它不会分割一行,只会在看到模式时启动一个新文件。而且它似乎只在BSD相关系统上受支持。

    awk 'BEGIN {RS = "$"} { ... }'
    

    编辑: 你可能会从中找到一些灵感 { ... } 第二部分:

    http://www.gnu.org/manual/gawk/html_node/Split-Program.html

    csplit 也似乎复制了模式出现的整条线。

        3
  •  1
  •   Powerlord    17 年前

    cut

    cut -d $ -f 1- filename
    

    我可能有一些语法错误,但这应该告诉cut,您使用的是$separated字段,并从结尾返回字段1。

        4
  •  1
  •   ghostdog74    16 年前
    awk -vRS="$" '{ print $0 > "text"t++".out" }' ORS="" file
    
        5
  •  1
  •   Venkataramesh Kommoju    16 年前

    使用split命令,我们可以使用字符串进行拆分。