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

Required suggestions to optimize a piece of unix ksh code

我是 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

我们将不胜感激。

我还没有看完你所有的脚本,但如果你只想获得 | 分隔列的第一列,去掉它们可能有的空格,你可以使用 awk 像这样:

$ awk -F"|" '{sub(" ","",); print }' file
custportal
sys-b

这使用 | 作为字段分隔符并用空字符串替换所有空格。然后,它打印出来。