使用awk将一个文件拆分为多个文件
有一个主文件(Master.txt),其中每一行都是定义HTML页面的字符串,每个字段都以制表符分隔。 记录布局如下所示:使用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
<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在注释中的解决方案也同样有效。