我是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
我们将不胜感激。
答案 0 :(得分:1)
我没有查看您的所有脚本,但是如果您只想获取<popup></popup>
上的第一列 - 分隔列,剥离它们可能具有的空格,您可以使用|
之类的这样:
awk
这使用$ awk -F"|" '{sub(" ","",$1); print $1}' file
custportal
sys-b
作为字段分隔符,并用空字符串替换所有空格。然后,它打印出来。