源文件输入(.csv):
TOTAL FULL PARTIALORDER FULLORDER DEVICENAME
10 2 123456 456789 OHWIL8499IPM101
8 0 345678 789605 OHCIN8499IPM102
TOTAL =是完整和部分订单的设备总数。
FULL =顺序不同但位置相同。
PARTIAL / FULL ORDER =订单号。我需要在每个设备名称后打印一个。
需求/目标:
我需要从TOTAL中减去FULL。如果存在差异,我需要更改最后打印的(#OF FULL)个设备名称上的订单号变量。
如果总共有10个设备,并且有2个已装满设备,则我需要打印OHWIL8499IPM101至OHWIL8499IPM108的8个设备,再加上部分订购号。然后是OHWIL8499IPM109-110,后跟完整的订单号。在上面的输入文件示例中,第二行没有区别,因此我只需要打印部分订单号。
所需的输出文件(.csv):
DEVICENAME ORDERNUMBER SHIPDATE TYPE SYSTEMSKU
OHWIL8499IPM101 123456 ASAP PROJECT1 12345678
OHWIL8499IPM102 123456 ASAP PROJECT1 12345678
OHWIL8499IPM103 123456 ASAP PROJECT1 12345678
OHWIL8499IPM104 123456 ASAP PROJECT1 12345678
OHWIL8499IPM105 123456 ASAP PROJECT1 12345678
OHWIL8499IPM106 123456 ASAP PROJECT1 12345678
OHWIL8499IPM107 123456 ASAP PROJECT1 12345678
OHWIL8499IPM108 123456 ASAP PROJECT1 12345678
OHWIL8499IPM109 456789 ASAP PROJECT1 12345678
OHWIL8499IPM110 456789 ASAP PROJECT1 12345678
当前脚本:
#!/bin/bash
currentUser=$(/bin/ls -la /dev/console | /usr/bin/cut -d ' ' -f 4)
LOGFILE="/Users/$currentUser/Desktop/kit.csv"
SRCFILE="/Users/$currentUser/Desktop/input.csv"
orderFull=$(cat "$SRCFILE" | sed 's/,/ /g' | awk '{print $4}')
orderPartial=$(cat "$SRCFILE" | sed 's/,/ /g' | awk '{print $3}')
device_name=$(cat "$SRCFILE" | sed 's/,/ /g' | awk '{print $5}')
quantityNum=$(cat "$SRCFILE" | sed 's/,/ /g' | awk '{print $1}')
quantityFull=$(cat "$SRCFILE" | sed 's/,/ /g' | awk '{print $2}')
shipDate=ASAP
projectType=Project1
systemSku=1235678
number=$(echo "$device_name" | head -c 9| tail -c 4)
max_sequence_name=$()
max_sequence_num=$(echo $max_sequence_name | rev | cut -c 1-3 | rev)
if [ -z "$max_sequence_name" ];
then
max_sequence_name=device_name
max_sequence_num=100
fi
array_new_sequence_name=()
for i in $(seq 1 $quantityNum);
do
cnum=$((max_sequence_num + i))
array_new_sequence_name+=($(echo $device_name$cnum))
done
for sqn in ${array_new_sequence_name[@]};
do
echo "$sqn,$orderNumber,$shipDate,$projectType,$systemSku,$number" >> $LOGFILE
done
到目前为止,我已经尝试使用以下代码,但是不确定我是否在正确的轨道上。
if [ "$quantityFull" = 0 ]; then
orderNumber=$(echo "$orderPartial")
else
math=$(expr $orderPartial - $orderFull)
#ENTER CODE HERE TO DETERMINE WHICH NAMES TO CHANGE ORDER NUMBER ON
orderNumber=$(echo "$orderFull")
fi
一旦可以确定,我将其放在上述脚本中的什么位置?还是有更简单的方法来实现此目的?如果您需要其他信息,请告诉我。