客户提交一份预加载文件列表,采用了如下格式: http://www.a.com/a/b/ a b c d e f g h i j k l m n http://www.b.com/b/c/ o p q r s t u v w x y z http://www.c.com/d/e http://www.d.com/f/g 必须要把文件整理成完整的url,才好操作。 最初的设想,是以带http开头的行为RS,以n为OFS,然后打印RS $0。随后发现这个想法问题多多——最主要的一点是:直接print $0的话,输出结果是不显示OFS的。 然后我才想到用for循环打印所有列的话,默认就已经分行了,不用定义OFS和ORS。 剩下的问题就是RS,然而不管我怎么写正则匹配表达式,结果都搞不定……唉 最后只能放弃这个想法,采用比较繁琐的办法:
awk -v RS=”http” ‘{if($2==””){print RS$1>url}else{for(i=2;i<=NF;i++){print RS$1$i>url}}}’ URLFILE
需要注意的一点,这里RS$1$i之间有没有空格(但不能是逗号)都不影响结果,但如果是{x=$1}{print RS x$i}的话,RS和x之间就必须有空格! 这样5000个错乱的url,一敲回车就输出成一个url文件,列好了完整的url列表。然后for;do wget;done搞定预加载~~