优化一段 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
这使用 |
作为字段分隔符并用空字符串替换所有空格。然后,它打印出来。
我是 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
这使用 |
作为字段分隔符并用空字符串替换所有空格。然后,它打印出来。