0

我几乎到处都在寻找我的问题的解决方案,所以我希望有人可以在这里指导我。

我有一个包含以下信息的 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 处理更改的速度很慢。

4

3 回答 3

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

于 2013-01-24T10:51:14.383 回答
0
awk '$6=$6" "$3"_"$4" "$5"_"$6" "$3"_"$4"_"$5"_"$6" "$5"_"$6"_"$3"_"$4' your_file

在这里测试

于 2013-01-24T12:02:06.550 回答
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
于 2013-01-24T13:14:25.147 回答