这是有问题的脚本:
for file in `ls products`
do
echo -n `cat products/$file \
| grep '<td>.*</td>' | grep -v 'img' | grep -v 'href' | grep -v 'input' \
| head -1 | sed -e 's/^ *<td>//g' -e 's/<.*//g'`
done
Run Code Online (Sandbox Code Playgroud)
我将在50000+文件上运行它,这个脚本大约需要12个小时.
算法如下:
<td>不包含任何"img","href"或"input"的表格单元格()的行.可以使用通常的bash文本过滤器(sed,grep,awk等)以及perl.
看起来这一切都可以用一个gawk命令替换:
gawk '
/<td>.*<\/td>/ && !(/img/ || /href/ || /input/) {
sub(/^ *<td>/,""); sub(/<.*/,"")
print
nextfile
}
' products/*
Run Code Online (Sandbox Code Playgroud)
这使用gawk扩展nextfile.
如果通配符扩展太大,那么
find products -type f -print | xargs gawk '...'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
676 次 |
| 最近记录: |