已关闭,此问题需要details or clarity。它目前不接受回答。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。
6天前关闭
Improve this question
in all.csv
2023-07-18;5;018-118;speed violation;64;highway 27 OP RZ 27A-032 Rome "Rome",km 16 + 072;t
2023-07-19;4;018-118;driveways;8860;highway 27 OP RZ 27A-032 Rome, km 16 + 072;t
2023-07-19;5;018-118;speed violation;64;highway 27 OP RZ 27A-032 Rome "Rome",km 16 + 072;t
2023-07-20;4;018-118;driveways;8860;highway 27 OP RZ 27A-032 Rome "Local Industrie street", km 18 + 072;t
我想强调一下第三、第四和第六列
L=($(cut -d ";" -f3,4,6 test/all.csv))
SHAPKA='id;code;type;'
DATE=($(awk -F';' '{print $1}' test/all.csv | sort -u ))
ID_RTS=($(awk -F';' '{print $3}' test/all.csv | sort -u ))
awk -F';' '{print $1}' test/all.csv |sort -u > test/test.csv
printf "$SHAPKA" >> test/test1.csv ; cat test/test.csv | awk 'BEGIN {ORS=";"}1' >> test/test1.csv
for l in ${DATE[@]}; do
((counter++))
done
awk -F';' '{print $5}' test/all.csv >> test/test4.csv ; cat test/test4.csv | awk -v c="$counter" '{ORS=(NR%c?FS=";":RS)}1' >> test/test5.csv
awk -F\; 'NR==1, OFS=";" {print $0 }' test/test1.csv >> test.csv
for i in ${ID_RTS[@]} ; do
awk -F\; -v i="$i" 'NR>2, OFS=";" { print i , $0 }' test/test5.csv >> test.csv
done
我有:
id;code;type;2023-06-30;2023-07-01;2023-07-02;2023-07-03;2023-07-04;2023-07-05;2023-07-06;2023-07-07;2023-07-08;2023-07-09;2023-07-10;2023-07-11;2023-07-12;2023-07-13;2023-07-14;2023-07-15;2023-07-16;2023-07-17;2023-07-18;2023-07-19;2023-07-20;2023-07-21;2023-07-22;2023-07-23;2023-07-24;2023-07-25;2023-07-26;
018-118;32;24225;31;25164;43;27562;40;24877;34;20993;47;26631;48;25119;3;1847;317;1;9465;2;7035;2;7556;5;7681;2;8401
018-118;3;8416;9;9114;4;9482;4;9312;5;8459;1;8552;2;8563;5;8772;6;9006;4;11910;4;9276;5;8685;2;8261;2
第4和第6栏不见了。我试过:
IFS=";" set -- ${L} &&
for v; do
awk -F\; -v i="$v" 'NR>2, OFS=";" { print i , $0 }' test/test5.csv >> test.csv
done
但得到错误:
bash: /usr/bin/awk: Argument list too long
我要id;code;type;2023-06-30;2023-07-01;2023-07-02;2023-07-03;2023-07-04;2023-07-05;2023-07-06;2023-07-07;2023-07-08;2023-07-09;2023-07-10;2023-07-11;2023-07-12;2023-07-13;2023-07-14;2023-07-15;2023-07-16;2023-07-17;2023-07-18;2023-07-19;2023-07-20;2023-07-21;2023-07-22;2023-07-23;2023-07-24;2023-07-25;2023-07-26; 018-118;speed violation;64;highway 27 OP RZ 27A-032 Rome "Rome",km 16 + 072;32;24225;31;25164;43;27562;40;24877;34;20993;47;26631;48;25119;3;1847;317;1;9465;2;7035;2;7556;5;7681;2;8401 018-118;driveways;8860;highway 27 OP RZ 27A-032 Rome, km 16 + 072;3;8416;9;9114;4;9482;4;9312;5;8459;1;8552;2;8563;5;8772;6;9006;4;11910;4;9276;5;8685;2;8261;2
是否可以将每个ID的一行相加id;code;type;2023-06-30;2023-07-01;2023-07-02;2023-07-03;2023-07-04;2023-07-05;2023-07-06;2023-07-07;2023-07-08;2023-07-09;2023-07-10;2023-07-11;2023-07-12;2023-07-13;2023-07-14;2023-07-15;2023-07-16;2023-07-17;2023-07-18;2023-07-19;2023-07-20;2023-07-21;2023-07-22;2023-07-23;2023-07-24;2023-07-25;2023-07-26; 018-118;speed violation;highway 27 OP RZ 27A-032 Rome "Rome",km 16 + 072;32;24225;31;25164;43;27562;40;24877;34;20993;47;26631;48;25119;3;1847;317;1;9465;2;7035;2;7556;5;7681;2;8401;(32+24225+31+25164+43+27562+40+24877+34+20993+47+26631+48+25119+3+1847+317+1+9465+2+7035+2+7556+5+7681+2+8401) 018-118;driveways;highway 27 OP RZ 27A-032 Rome, km 16 + 072;3;8416;9;9114;4;9482;4;9312;5;8459;1;8552;2;8563;5;8772;6;9006;4;11910;4;9276;5;8685;2;8261;2;(3+8416+9+9114+4+9482+4+9312+5+8459+1+8552+2+8563+5+8772+6+9006+4+11910+4+9276+5+8685+2+8261+2)
1条答案
按热度按时间7xllpg7q1#
要将一个文件的行前置到另一个文件的行上,可以使用
paste
。举例来说:
我不太懂你的代码。
看起来你可能正在尝试重新排列具有以下形式的数据:
在标题行中,每个不同的日期都有一列:
后面跟着行,其中每个id/code/type元组是唯一的:
输入数据示例:
会变成:
(我将日期列留空,输入中没有相应的id/code/type。
一个使用
gawk
的方法(可以按排序顺序处理数组):