【发布时间】:2020-09-06 11:03:06
【问题描述】:
问题描述: 我正在尝试读取文件 test.csv,并在每行的末尾添加一个变量 $lastid(例如,例如 35)。 但是这个变量需要每两行递增一次。
期望: 我期望得到: 对于行尾的第 1 行和第 2 行 ",36"。 对于行尾的第 3-4 行“,37”。 对于行尾的第 5-6 行“,38”。 等等……
脚本代码:
set -x ##debug mode on
lines=$( wc -l < test.csv ) ## you count the total of lines
lines=$((lines+1)) ## you increment it
g=$lastid ## this is the variable of my lastid_game from my database (let's say 35 for the example)
i=1
j=1
while [ $j -le $lines ] ## while my lines number is lower or equal than the total of lines
do
if [ $(( $j%2 )) -eq 0 ] ## if my line number is even
then
echo "number "$j" is even" ## I display it
j=$(( $j+1 )) ## I increment my lines
sed -e "s/$/,$g/" test.csv > test1.csv
else
echo "number "$j" is odd" ## I display my line is odd
g=$(( $g+1 )) ## I increment my id_game
j=$(( $j+1 )) ## I increment my lines
sed -e "s/$/,$g/" test.csv > test1.csv
fi
done
set +x ##debug mode off
test.csv 的内容:
a,b,c,d,e,f
a,b,c,d,e,f
a,b,c,d,e,f
a,b,c,d,e,f
a,b,c,d,e,f
a,b,c,d,e,f
a,b,c,d,e,f
a,b,c,d,e,f
当前输出:(我认为这很好)
++ wc -l
+ lines=46
+ lines=47
+ g=35
+ i=1
+ j=1
+ '[' 1 -le 47 ']'
+ '[' 1 -eq 0 ']'
+ echo 'number 1 is odd'
number 1 is odd
+ g=36
+ j=2
+ sed -e 's/$/,36/' test.csv
+ '[' 2 -le 47 ']'
+ '[' 0 -eq 0 ']'
+ echo 'number 2 is even'
number 2 is even
+ j=3
+ sed -e 's/$/,36/' test.csv
+ '[' 3 -le 47 ']'
+ '[' 1 -eq 0 ']'
+ echo 'number 3 is odd'
number 3 is odd
+ g=37
+ j=4
+ sed -e 's/$/,37/' test.csv
+ '[' 4 -le 47 ']'
+ '[' 0 -eq 0 ']'
+ echo 'number 4 is even'
number 4 is even
+ j=5
+ sed -e 's/$/,37/' test.csv
+ '[' 5 -le 47 ']'
+ '[' 1 -eq 0 ']'
+ echo 'number 5 is odd'
number 5 is odd
+ g=38
+ j=6
+ sed -e 's/$/,38/' test.csv
+ '[' 6 -le 47 ']'
+ '[' 0 -eq 0 ']'
+ echo 'number 6 is even'
number 6 is even
+ j=7
+ sed -e 's/$/,38/' test.csv
+ '[' 7 -le 47 ']'
+ '[' 1 -eq 0 ']'
+ echo 'number 7 is odd'
当前结果: test1.csv 给了我以下结果:
,59a,b,c,d,e,f
,59a,b,c,d,e,f
,59a,b,c,d,e,f
,59a,b,c,d,e,f
,59a,b,c,d,e,f
,59a,b,c,d,e,f
,59a,b,c,d,e,f
a,b,c,d,e,f,59
问题一: id 总是一样的。
问题 2: id 没有增加,但似乎只显示最后一个计算出来的。
请问有谁知道可能是什么问题?
【问题讨论】:
-
请发布您想要的输出。
-
请将该示例输入的所需输出(无描述)添加到您的问题(无评论)。
-
顺便说一句:
>覆盖文件,>>附加到文件。 -
不要为此使用 shell 循环。见why-is-using-a-shell-loop-to-process-text-considered-bad-practice