Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用awk将一个文件拆分为多个文件_Awk_Gawk - Fatal编程技术网

使用awk将一个文件拆分为多个文件

使用awk将一个文件拆分为多个文件,awk,gawk,Awk,Gawk,有一个主文件(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>[conte

有一个主文件(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>

1.html[html格式的1.html内容]
2.html[html格式的2.html内容]
3.html[html格式的3.html内容]
HTML页面在
中定义<代码>可能不是必需的,但包含在此处以指示\u文件结尾\u的逻辑位置

如何使用
awk
为每行(以
开头)生成一个文件,其中新文件的内容是
,新文件的名称是

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


提前完成。

假设
字段3中的HTML可能包含或不包含选项卡:

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

假设
字段3中的HTML可能包含也可能不包含选项卡:

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

类似于
awk-F“\t”{print$3>$2}的文件
应该会使它成为可复制的文件。
[html格式的1.html内容]
,等等。是否包含制表符?@fedorqui这将是一个答案@fedorqui抱歉-在搜索stackoverflow时完全错过了该解决方案。另外-仅供参考-当输入标题后提供选项时,它不会弹出。类似于
awk-F“\t”{print$3>$2}的文件
应该可以使其生效。Can
[html格式的1.html内容]
等的可能重复。是否包含制表符?@fedorqui这将是一个答案@fedorqui抱歉-在搜索stackoverflow时完全错过了该解决方案。另外-FYI-当输入标题后提供选项时,它不会弹出。@Kent是的,它是$2(带有目标文件名的字段)@Ed我的库中现在有几个Ed_Morton_文件。@Kent&Jay,谢谢,我现在更新了解决方案,打印到$2。如果保证HTML中没有制表符,那么如果在注释的前面添加一个
NR>1
,fedorqui在注释中的解决方案也会起作用。@Kent是的,它是$2(带有目标文件名的字段)@Ed我的库中现在有几个Ed_Morton_文件。@Kent&Jay,谢谢我现在更新了解决方案以打印到$2。如果保证HTML中没有标签,那么如果在注释前面添加
NR>1
,fedorqui在注释中的解决方案也同样有效。