【问题标题】:Use awk to split one file into many files使用 awk 将一个文件拆分为多个文件
【发布时间】:2014-08-05 23:33:00
【问题描述】:

有一个主文件 (Master.txt),其中每一行都是定义 HTML 页面的字符串,并且每个字段都是制表符分隔的。 记录布局如下:

<item_ID>   <field_1>   <field_2>   <field_3>
1   1.html  <html>[content for 1.html in HTML format]</html>    <EOF>
2   2.html  <html>[content for 2.html in HTML format]</html>    <EOF>
3   3.html  <html>[content for 3.html in HTML format]</html>    <EOF>

HTML 页面在&lt;field_2&gt; 中定义。 &lt;field_3&gt; 可能不是必需的,但包含在此处以指示 end_of_file 的逻辑位置。

如何使用awk为每一行(以&lt;item_ID&gt;开头)生成一个文件,其中新文件的内容为&lt;field_2&gt;,新文件的名称为&lt;field_1&gt;

我在Windows 7 下运行GNUwin32,并将配置awk 解决方案以在.bat 文件中执行。不幸的是不能在 Windows 中做管道,所以希望有一个单一的 awk 程序解决方案。

提前 TY。

【问题讨论】:

  • awk -F"\t" '{print $3 &gt; $2}' file 之类的东西应该可以做到。
  • [content for 1.html in HTML format]等是否可以包含制表符?
  • @fedorqui 这将是一个答案!
  • @fedorqui 抱歉 - 在搜索 stackoverflow 时完全错过了该解决方案。另外 - 仅供参考 - 在输入标题后提供选项时它没有弹出。

标签: awk gawk


【解决方案1】:

假设field 3 中的 HTML 可能包含也可能不包含标签:

awk -F'\t' 'match($0,/<html>.*<\/html>/){print substr($0,RSTART,RLENGTH) > $2}' file

【讨论】:

  • @Kent 是的,是 $2(目标文件名的字段)
  • @Ed 我的图书馆现在有几个 Ed_Morton_files。
  • @Kent & Jay,谢谢我现在将解决方案更新为 2 美元。如果保证 HTML 中没有标签,那么如果您在前面添加 NR&gt;1,fedorqui 在评论中的解决方案也同样有效。
猜你喜欢
  • 2017-09-05
  • 2016-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-06
  • 2017-07-09
  • 2018-10-05
相关资源
最近更新 更多