我有一个工作查询,按硬件模型和结果对数据进行分组,但问题是有很多"结果".我试图将其减少到"如果结果= 0然后保持为0,否则将其设置为1".这通常有效,但我最终得到:
day | name | type | case | count
------------+----------------+------+------+-------
2013-11-06 | modelA | 1 | 0 | 972
2013-11-06 | modelA | 1 | 1 | 42
2013-11-06 | modelA | 1 | 1 | 2
2013-11-06 | modelA | 1 | 1 | 11
2013-11-06 | modelB | 1 | 0 | 456
2013-11-06 | modelB | 1 | 1 | 16
2013-11-06 | modelB | 1 | 1 | 8
2013-11-06 …Run Code Online (Sandbox Code Playgroud) 我有一个文本文件,可以有X个字段,每个字段用逗号分隔.在我的脚本中,我逐行阅读,检查在该行上填充了多少字段,并确定我需要在该行的末尾追加多少逗号来表示所有字段.例如,文件如下所示:
Address,nbItems,item1,item2,item3,item4,item5,item6,item7
2325988023,7,1,2,3,4,5,6,7
2327036284,5,1,2,3,4,5
2326168436,4,1,2,3,4
Run Code Online (Sandbox Code Playgroud)
应该成为这样的:
Address,nbItems,item1,item2,item3,item4,item5,item6,item7
2325988023,7,1,2,3,4,5,6,7
2327036284,5,1,2,3,4,5,,
2326168436,4,1,2,3,4,,,
Run Code Online (Sandbox Code Playgroud)
我的下面的脚本有效,但看起来非常低效.它是逐行阅读在大文件上有困难吗?导致经济放缓的是它吗?更好的方法吗?
#!/bin/bash
lineNum=0
numFields=`head -1 File.txt | egrep -o "," | wc -l`
cat File.txt | while read LINE
do
lineNum=`expr 1 + $lineNum`
num=`echo $LINE | egrep -o "," | wc -l`
needed=$(( numFields - num ))
for (( i=0 ; i < $needed ; i++ ))
do
sed -i "${lineNum}s/$/,/" File.txt
done
done
Run Code Online (Sandbox Code Playgroud) 我有一个多年的每日xml报告,我正在尝试通过每一个,找到购买日期,并确定它是否至少比文件的日期早一年.如果是这样,我将文件的名称和购买日期写入日志.问题是性能真的非常糟糕.
#!/bin/bash
for file in *xml ; do
fileDate=`echo ${file} | cut -c 18-35 | sed 's/.xml//'`
fileDateSeconds=`date --date="${fileDate}" +"%s"`
awk '/PurchaseDate/ {print}' ${file} >> /tmp/yamExport/tempFile.txt
cat /tmp/yamExport/tempFile.txt | while read input
do
lineDate=`echo ${input} | cut -c 15-24`
lineDateSeconds=`date --date="${lineDate}" +"%s"`
delta=`expr $fileDateSeconds - $lineDateSeconds`
if [ "$delta" -gt "31556926" ]
then
#echo "$file : $input"
echo "$file : $input" >> /tmp/yamExport/yamExportTimestamps2.log
fi
done
done
Run Code Online (Sandbox Code Playgroud)
起初我只是逐行循环遍历整个文件
cat ${file} | while read input
do
if [[ "$input" =~ "PurchaseDate" ]] …Run Code Online (Sandbox Code Playgroud) bash ×2
awk ×1
case ×1
group-by ×1
loops ×1
performance ×1
postgresql ×1
sed ×1
sql ×1
while-loop ×1
xml ×1