更改为列并删除列csv shell

时间:2014-12-05 19:49:26

标签: shell

我有一个包含数百行数据的csv文件。我希望能够在顶部插入一行删除具有数据名称的列,然后将数据名称放在数据值列的顶部。然后将其转换为文本到由空格分隔的列。我希望在shell中完成这个。看下面的exp之前和之后。

之前:一行数据

work_needs_to_get_done_001 time 25000000 runs 28908331 other_data1 89708097   
work_needs_to_get_done_002 time 25000000 runs 27285458 other_data1 89708097   
work_needs_to_get_done_003 time 25000000 runs 27284897 other_data1 89708097  
work_needs_to_get_done_004 time 25000000 runs 27280741 other_data1 89708097

之后:按空格分隔的各列

Workname                   Time     Runs      Other_data1   Other_data2 
work_needs_to_get_done_001 25000000 28908331  89708097      89708097  
work_needs_to_get_done_002 25000000 27285458  89708097      89708097
work_needs_to_get_done_003 25000000 27284897  89708097      89708097
work_needs_to_get_done_004 25000000 27280741  89708097      89708097

2 个答案:

答案 0 :(得分:1)

当需要处理列时,请考虑使用

awk '{print $1, $3, $5, $6}' file

答案 1 :(得分:0)

echo "Workname Time Runs  Other_data1 Other_data2" > 1.txt
awk '{ print $1, $3,$5,$7 }' filename >> 1.txt

格式化:

awk '{ printf "%-40s %-20s\n %-20 %-20 %-20", $1, $2,$3,$4}'  1.txt