【问题标题】:splitting a huge text file based on line content根据行内容拆分巨大的文本文件
【发布时间】:2015-03-24 15:03:00
【问题描述】:

帮帮我,我真的迷路了。 我有一个很大的文本文件,里面有很多链接,我试图根据链接所属的网站将它们分开。我试图用 csplit 命令来做,但我不确定我会怎么做,因为它取决于文本内容。

文字示例:

www.unix.com/man-page/opensolaris/1/csplit/&hl=en
www.unix.com/shell-programming-and-scripting/126539-csplit-help.html/RK=0/RS=iGOr1SINnK126qZciYPZtBHpEmg-
www.w3cschool.cc/linux/linux-comm-csplit.html
www.linuxdevcenter.com/cmd/cmd.csp?path=c/csplit+"csplit"&hl=en&ct=clnk

所以在这个例子中,前两个链接将在一个文件中,而左边的 2 个链接将在一个文件中。 这将如何工作?我真的不知道这是否可能。 (新手程序员)

【问题讨论】:

标签: bash awk sed split csplit


【解决方案1】:

试试:

awk 'BEGIN{FS="/"} {print > $1}' [your file name]

输出:

cat www.unix.com 
www.unix.com/man-page/opensolaris/1/csplit/&hl=en
www.unix.com/shell-programming-and-scripting/126539-csplit-help.html/RK=0/RS=iGOr1SINnK126qZciYPZtBHpEmg-
cat www.linuxdevcenter.com 
www.linuxdevcenter.com/cmd/cmd.csp?path=c/csplit+"csplit"&hl=en&ct=clnk
cat www.w3cschool.cc 
www.w3cschool.cc/linux/linux-comm-csplit.html

{print > $1} 将根据$1(在本例中为域名)将输出重定向到单独的文件。

【讨论】:

  • 或者只是awk -F/ '{print > $1}' file
  • 哦。我不知道这可以在参数中设置。可以这样定义多个分隔符吗?
  • 是:-F"[a-c]"-F"this|that" 或任何正则表达式 -F"([0-9]+|[a-b])|more"
  • 谢谢你们,它完美无缺!我在每行的开头都有 http://,也有一些空行,但没有什么“sed”没有处理。
猜你喜欢
  • 2017-04-27
  • 1970-01-01
  • 2010-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-14
  • 1970-01-01
相关资源
最近更新 更多