优化一段unix ksh代码所需的建议

时间:2015-05-20 08:54:37

标签: sed ksh

我是shell脚本的新手,并期待如何优化下面的代码以避免不必要的循环。

文件“DD。$ BUS_DT.dat”是一个管道分隔文件,包含4列。 DD.2015-05-19.dat中的样本数据如下

cust portal|10|10|0
sys-b|10|10|0

代码

i=0;

sed 's///g;s/[0-9]//g' ./DD.$BUS_DT.dat > ./temp-processed.dat
set -A sourceList

while read line
do
        #echo $line
        case $line in
                'cust portal')    sourceList[$i]=custportal;;
                *)              sourceList[$i]=${line};;
        esac        
        (( i += 1));
done < ./temp-processed.dat;

echo ${sourceList[@]};
i=0;
while [[ i -lt ${#sourceList[@]} ]]; do
        print ${sourceList[i]} >> ./processed-$BUS_DT.dat
        (( i += 1))
done

我的目标是从文件的第一列读取数据而不留空格,以便输出应该像......

custportal
sys-b

我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

我没有查看您的所有脚本,但是如果您只想获取<popup></popup>上的第一列 - 分隔列,剥离它们可能具有的空格,您可以使用|之类的这样:

awk

这使用$ awk -F"|" '{sub(" ","",$1); print $1}' file custportal sys-b 作为字段分隔符,并用空字符串替换所有空格。然后,它打印出来。