日期:2014-05-16  浏览次数:20753 次

SHELL行处理:替换行中某域
文件file,行中的各个域以“|”分开;
若某域为空,则替换为变量$aa,其他域保持不变。
注意:文件有N行,N很大。


------解决方案--------------------
C/C++ code

awk -F'|' 'OFS="|" {for(i=1;i<=NF;i++){if($i=="") $i="'$aa'"}print $0}' file > tmpfile
mv tmpfile file

------解决方案--------------------
awk -F'|' 'OFS="|" {for(i=1;i<=NF;i++){if($i=="") $i="'$aa'"}print $0}' file > tmpfile
mv tmpfile file

------解决方案--------------------
探讨

引用:

来晚了~头功又让熊猫抢了
就用awk来弄,不用担心效率

引用:

那你说用什么工具

能否适应SED之类的工具直接替换文件中某行某字段?

------解决方案--------------------
在处理大文件的时候 awk好像比sed快
虽然是2句 但是第二句的执行速度是非常快的。
就算是100G的东西 在同一个分区里 mv一下 也是瞬间。