0

列の順序 (順序) を変更する必要がある

# 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

4 に答える 4

2

コンマ + スペースを区切り文字として使用し、列の印刷中に必要なコンマを印刷します。

awk -F", " '{print $4",", $3",", $2",", $1}' filename
于 2012-10-15T08:46:49.247 に答える
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
于 2012-10-15T14:08:39.167 に答える
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()
于 2012-10-15T09:10:46.203 に答える
1
awk '{sub(",",""); print $4", " $3, $2, $1}' file
于 2012-10-15T11:27:18.940 に答える