Python中文
首页
教程
问答
标签
搜索
登录
注册
unix scrip的增强
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一个算法,可以屏蔽用户输入的列的数据。下面的功能是为同样的目的而设计的。当脚本被执行时,大约需要4个小时来屏蔽100000条记录。客户希望在10分钟内达到同样的效果。您能否建议我如何实现以下内容,以便提高其性能。不管怎样,只要不改变算法就可以改变函数。你知道吗</p> <pre><code>data_mask() { col_val=$1 l_ret_str="" l_an=0 l_lp=0 l_mod=0 absnum=0 austart=65 auend=90 aclsize=26 alstart=97 alend=122 nstart=48 nend=57 nclsize=10 l_lp=`expr length "$col_val"` if [[ $l_lp -ne 0 ]]; then for i in `eval "echo {1..$l_lp}"` do single_char=$(SUBSTR "$col_val" $i) ascii_num_val=$(ASCII "$single_char") l_mod=$((l_mod+ascii_num_val)) done l_mod=$((l_mod % nclsize)) for i in `eval "echo {1..$l_lp}"` do single_char=$(SUBSTR "$col_val" $i) ascii_num_val=$(ASCII "$single_char") l_an=$ascii_num_val tempvar=$((l_an - l_lp - l_mod - i)) absnum=$(ABS $tempvar) if [[ $l_an -ge $austart && $l_an -le $auend ]]; then tempmodval=$((absnum % aclsize)) tempasciival=$((austart + tempmodval)) l_ret_str=$l_ret_str$(CHR $tempasciival) elif [[ $l_an -ge $alstart && $l_an -le $alend ]]; then tempmodval=$((absnum % aclsize)) tempasciival=$((alstart + tempmodval)) l_ret_str=$l_ret_str$(CHR $tempasciival) elif [[ $l_an -ge $nstart && $l_an -le $nend ]]; then tempmodval=$((absnum % nclsize)) tempasciival=$((nstart + tempmodval)) l_ret_str=$l_ret_str$(CHR $tempasciival) else tempmodval=$((absnum % nclsize)) tempasciival=$((austart + tempmodval)) l_ret_str=$l_ret_str$(CHR $tempasciival) fi done fi echo "$l_ret_str" } </code></pre> <p>此处<code>col_val=$1</code>输入者用户.if用户输入2,我们的代码将屏蔽第二列。我们通过下面调用上面的函数。你知道吗</p> <pre><code> while read p; do if [[ $line -le $skip_line ]]; then echo "$p" >> $outputfile else pre_str=`echo $p | cut -d'|' -f1-$((colnum - 1))` column_value=`echo $p | cut -d'|' -f$colnum` post_str=`echo $p | cut -d'|' -f$((colnum + 1))-$totalcol` echo "column_value=$column_value" maskvalue=$(data_mask "$column_value") echo $pre_str"|"$maskvalue"|"$post_str >> $outputfile fi line=$((line + 1)) done <$temp_outputfile </code></pre> <p>这里我们把文件分成三部分。然后调用我们的函数。这里<code>skipline</code>是代码应该包含的行数跳过.eg标题。 所以如果输入是</p> <pre><code>id|name|dept 11|Shrut|consultant 12|wipro|HR 13|capgemini|IT </code></pre> <p>那么输出应该如下所示。你知道吗</p> <pre><code>id|name|dept 11|sqmbr|consultant 12|itzaw|HR 13|khvlipkoi|IT </code></pre> <p>请提出一些建议。如果你需要一些澄清,我会在评论中提供,但请不要把它搁置。我必须提高执行速度,而不改变用data\u mask()编写的算法。函数可以更改,但算法不能更改。 我同样期待你的帮助。你知道吗</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>@丹尼尔, 很好的代码,为同一个问题写了类似的东西, 但既然你的密码更好了,我就不发了, 没有想过使用枚举,而是循环遍历它们。你知道吗</p> <p>现在我将返回并重新考虑我的许多代码,以包括枚举的自由。你知道吗</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
当用户用PYTHON设置一个或一个不带值的URL时,他们怎么能输入一个/a的代码呢?
1 回答
当用户登录到站点时,如何显示不同的导航栏
1 回答
当用户登录时,在Flask中向用户显示处理结果
1 回答
当用户的Flask会话结束时,我如何从Redis后端中移除所有Celery结果?
4 回答
当用户的Okta配置文件字段当前为blan时,更新该字段
2 回答
当用户的付款逾期2天时,从Django模型检索数据
4 回答
当用户的消息以问号结尾时,如何让机器人说些什么?
1 回答
当用户的系统上可能也安装了Python 2.7时,如何在用户的系统上运行Python 3脚本?
4 回答
当用户确定打印数量时,使用Matplotlib打印动画
7 回答
当用户离开时是否可以删除整个网页?
5 回答
当用户给出一个单词时如何打印?
4 回答
当用户继续更改TKin中的值(使用trace方法)时,使用Entry并更新输入的条目
2 回答
当用户编辑表单字段时,从Django时间字段中删除秒数
2 回答
当用户被更改时,消息不会来自web套接字
2 回答
当用户访问表单时,如何使表单为只读,而不具有更改权限
4 回答
当用户试图更改对象的值时,使用描述符类引发RuntimeError
1 回答
当用户调整GUI的大小时,是否有方法更改GUI内容的大小?
8 回答
当用户调整风的大小时,pythontkinter小部件的大小会不均匀
1 回答
当用户购买某个类别时,是否查找其他类别的销售?
6 回答
当用户转到上一页时,Django和芹菜插入操作
5 回答