我几乎到处寻找我的问题的解决方案,所以我希望有人可以在这里指导我。
我有一个包含以下信息的csv文件:
Location NumA1 NumA2 NumB1 NumB2
Area 1 1321 140 1321 1530
Area 2 1321 140 1321 1540
Area 3 1321 140 1321 1644
Area 4 1321 140 1321 1645
Area 5 1321 140 1321 2140
Area 6 1321 141 1321 142
Area 7 1321 141 1321 143
Area 8 1321 141 1323 181
Area 9 1321 141 1323 182
Area 10 1321 141 1323 183
Area 11 1321 141 1333 401
Area 12 1321 141 1323 902
我想得到的输出如下:
Location NumA1 NumA2 NumB1 NumB2 A Cell B Cell A to B B to A
Area 1 1321 140 1321 1530 1321_140 1321_1530 1321_140_1321_1530 1321_1530_1321_140
Area 2 1321 140 1321 1540 1321_140 1321_1540 1321_140_1321_1540 1321_1540_1321_140
Area 3 1321 140 1321 1644 1321_140 1321_1644 1321_140_1321_1644 1321_1644_1321_140
Area 4 1321 140 1321 1645 1321_140 1321_1645 1321_140_1321_1645 1321_1645_1321_140
Area 5 1321 140 1321 2140 1321_140 1321_2140 1321_140_1321_2140 1321_2140_1321_140
Area 6 1321 141 1321 142 1321_141 1321_142 1321_141_1321_142 1321_142_1321_141
Area 7 1321 141 1321 143 1321_141 1321_143 1321_141_1321_143 1321_143_1321_141
Area 8 1321 141 1323 181 1321_141 1323_181 1321_141_1323_181 1323_181_1321_141
Area 9 1321 141 1323 182 1321_141 1323_182 1321_141_1323_182 1323_182_1321_141
Area 10 1321 141 1323 183 1321_141 1323_183 1321_141_1323_183 1323_183_1321_141
Area 11 1321 141 1333 401 1321_141 1333_401 1321_141_1333_401 1333_401_1321_141
Area 12 1321 141 1323 902 1321_141 1323_902 1321_141_1323_902 1323_902_1321_141
这与Excel中的连接相同,但由于文件超过200,000行,因此Excel处理更改的速度会变慢。
答案 0 :(得分:2)
$ awk '{ print $1,$2,$3,$4,$5,$6,$3"_"$4,$5"_"$6,$3"_"$4"_"$5"_"$6,$5"_"$6"_"$3"_"$4 }' 1.txt
Area 1 1321 140 1321 1530 1321_140 1321_1530 1321_140_1321_1530 1321_1530_1321_140
Area 2 1321 140 1321 1540 1321_140 1321_1540 1321_140_1321_1540 1321_1540_1321_140
Area 3 1321 140 1321 1644 1321_140 1321_1644 1321_140_1321_1644 1321_1644_1321_140
Area 4 1321 140 1321 1645 1321_140 1321_1645 1321_140_1321_1645 1321_1645_1321_140
Area 5 1321 140 1321 2140 1321_140 1321_2140 1321_140_1321_2140 1321_2140_1321_140
Area 6 1321 141 1321 142 1321_141 1321_142 1321_141_1321_142 1321_142_1321_141
Area 7 1321 141 1321 143 1321_141 1321_143 1321_141_1321_143 1321_143_1321_141
Area 8 1321 141 1323 181 1321_141 1323_181 1321_141_1323_181 1323_181_1321_141
Area 9 1321 141 1323 182 1321_141 1323_182 1321_141_1323_182 1323_182_1321_141
Area 10 1321 141 1323 183 1321_141 1323_183 1321_141_1323_183 1323_183_1321_141
Area 11 1321 141 1333 401 1321_141 1333_401 1321_141_1333_401 1333_401_1321_141
Area 12 1321 141 1323 902 1321_141 1323_902 1321_141_1323_902 1323_902_1321_141
如果您想要一个标签式空间,可以通过以下方式使用awk:
$ awk '{ print $1,$2"\t"$3"\t"$4"\t"$5"\t"$6"\t"$3"_"$4"\t"$5"_"$6"\t"$3"_"$4"_"$5"_"$6"\t"$5"_"$6"_"$3"_"$4 }' 1.txt
Area 1 1321 140 1321 1530 1321_140 1321_1530 1321_140_1321_1530 1321_1530_1321_140
Area 2 1321 140 1321 1540 1321_140 1321_1540 1321_140_1321_1540 1321_1540_1321_140
Area 3 1321 140 1321 1644 1321_140 1321_1644 1321_140_1321_1644 1321_1644_1321_140
Area 4 1321 140 1321 1645 1321_140 1321_1645 1321_140_1321_1645 1321_1645_1321_140
Area 5 1321 140 1321 2140 1321_140 1321_2140 1321_140_1321_2140 1321_2140_1321_140
Area 6 1321 141 1321 142 1321_141 1321_142 1321_141_1321_142 1321_142_1321_141
Area 7 1321 141 1321 143 1321_141 1321_143 1321_141_1321_143 1321_143_1321_141
Area 8 1321 141 1323 181 1321_141 1323_181 1321_141_1323_181 1323_181_1321_141
Area 9 1321 141 1323 182 1321_141 1323_182 1321_141_1323_182 1323_182_1321_141
Area 10 1321 141 1323 183 1321_141 1323_183 1321_141_1323_183 1323_183_1321_141
Area 11 1321 141 1333 401 1321_141 1333_401 1321_141_1333_401 1333_401_1321_141
Area 12 1321 141 1323 902 1321_141 1323_902 1321_141_1323_902 1323_902_1321_141
如果您还想打印标题,请参阅以下链接:http://www.techtrunch.com/scripting/awk-formatted-output
答案 1 :(得分:0)
awk '$6=$6" "$3"_"$4" "$5"_"$6" "$3"_"$4"_"$5"_"$6" "$5"_"$6"_"$3"_"$4' your_file
测试here
答案 2 :(得分:0)
如果您想自己提供标题行:
$ awk 'NR>1{a=$3"_"$4;b=$5"_"$6;print $0,a,b,a"_"b,b"_"a}' file
Area 1 1321 140 1321 1530 1321_140 1321_1530 1321_140_1321_1530 1321_1530_1321_140
Area 2 1321 140 1321 1540 1321_140 1321_1540 1321_140_1321_1540 1321_1540_1321_140
Area 3 1321 140 1321 1644 1321_140 1321_1644 1321_140_1321_1644 1321_1644_1321_140
Area 4 1321 140 1321 1645 1321_140 1321_1645 1321_140_1321_1645 1321_1645_1321_140
Area 5 1321 140 1321 2140 1321_140 1321_2140 1321_140_1321_2140 1321_2140_1321_140
Area 6 1321 141 1321 142 1321_141 1321_142 1321_141_1321_142 1321_142_1321_141
Area 7 1321 141 1321 143 1321_141 1321_143 1321_141_1321_143 1321_143_1321_141
Area 8 1321 141 1323 181 1321_141 1323_181 1321_141_1323_181 1323_181_1321_141
Area 9 1321 141 1323 182 1321_141 1323_182 1321_141_1323_182 1323_182_1321_141
Area 10 1321 141 1323 183 1321_141 1323_183 1321_141_1323_183 1323_183_1321_141
Area 11 1321 141 1333 401 1321_141 1333_401 1321_141_1333_401 1333_401_1321_141
Area 12 1321 141 1323 902 1321_141 1323_902 1321_141_1323_902 1323_902_1321_141
或者如果您希望它像其他字段一样生成:
$ awk '{s=(NR==1?2:3); a=$s"_"$++s;b=$++s"_"$++s;print $0,a,b,a"_"b,b"_"a}' file
Location NumA1 NumA2 NumB1 NumB2 NumA1_NumA2 NumB1_NumB2 NumA1_NumA2_NumB1_NumB2 NumB1_NumB2_NumA1_NumA2
Area 1 1321 140 1321 1530 1321_140 1321_1530 1321_140_1321_1530 1321_1530_1321_140
Area 2 1321 140 1321 1540 1321_140 1321_1540 1321_140_1321_1540 1321_1540_1321_140
Area 3 1321 140 1321 1644 1321_140 1321_1644 1321_140_1321_1644 1321_1644_1321_140
Area 4 1321 140 1321 1645 1321_140 1321_1645 1321_140_1321_1645 1321_1645_1321_140
Area 5 1321 140 1321 2140 1321_140 1321_2140 1321_140_1321_2140 1321_2140_1321_140
Area 6 1321 141 1321 142 1321_141 1321_142 1321_141_1321_142 1321_142_1321_141
Area 7 1321 141 1321 143 1321_141 1321_143 1321_141_1321_143 1321_143_1321_141
Area 8 1321 141 1323 181 1321_141 1323_181 1321_141_1323_181 1323_181_1321_141
Area 9 1321 141 1323 182 1321_141 1323_182 1321_141_1323_182 1323_182_1321_141
Area 10 1321 141 1323 183 1321_141 1323_183 1321_141_1323_183 1323_183_1321_141
Area 11 1321 141 1333 401 1321_141 1333_401 1321_141_1333_401 1333_401_1321_141
Area 12 1321 141 1323 902 1321_141 1323_902 1321_141_1323_902 1323_902_1321_141