更改列的顺序

时间:2012-10-15 08:42:48

标签: python awk

我需要更改列的顺序(即顺序)

# cat customer.csv
customerno, firstname, lastname, sales
23242, john, doe, 2345.00
23253, jane, doe, 1234.00
23221, greg, johnson, 2345.00
23210, howard, gardner, 2345.00

这样可行,但第一列后没有逗号。

# awk  '{print $4, $3, $2, $1}' customer.csv
sales lastname, firstname, customerno,
2345.00 doe, john, 23242,
1234.00 doe, jane, 23253,
2345.00 johnson, greg, 23221,
2345.00 gardner, howard, 23210,

如何删除最后的逗号?这样做有一种优雅的方式吗?

# awk  '{print $4 ",", $3, $2, $1}' customer.csv
sales, lastname, firstname, customerno,
2345.00, doe, john, 23242,
1234.00, doe, jane, 23253,
2345.00, johnson, greg, 23221,
2345.00, gardner, howard, 23210,

4 个答案:

答案 0 :(得分:2)

使用逗号+空格作为分隔符,并在打印列时打印必要的逗号:

awk -F", " '{print $4",", $3",", $2",", $1}' filename

答案 1 :(得分:1)

如果您想在python中进行此操作(您的标记会建议),请尝试以下操作:

f = open('customer.csv')
for line in f:
    line = line.strip().split(', ')
    line.reverse()
    print ', '.join(line)

或者,如果要将结果输出到文件:

f = open('customer.csv')
out = ''
for line in f:
    line = line.strip().split(', ')
    line.reverse()
    out += ', '.join(line) + '\n'
f.close()

f = open('customer2.csv', 'w')
f.write(out)
f.close()

答案 2 :(得分:1)

awk '{sub(",",""); print $4", " $3, $2, $1}' file

答案 3 :(得分:1)

你很接近,你只是忘了设置你的字段分隔符:

$ awk  'BEGIN{FS=OFS=", "} {print $4, $3, $2, $1}' customer.csv
sales, lastname, firstname, customerno
2345.00, doe, john, 23242
1234.00, doe, jane, 23253
2345.00, johnson, greg, 23221
2345.00, gardner, howard, 23210
相关问题