我的文件看起来像这样
1;1;Happy Feet;WB;€546,353;-32.3%;;121;-;€4,515;€2,841,113;5;Australia, USA;:
2;3;The Departed;WB;€435,830;-34.8%;;85;-;€5,127;€1,149,495;2;Unknown;:
3;2;Eragon;Fox;€412,229;-41.6%;;90;-;€4,580;€1,752,715;3;UK, USA;:
....
这些文件通过使用tail来剪切前6行来进入:
sudo tail -n+7 filename
是否可以仅保留第5,10和11列的数值并用整数值替换这些列?我在考虑awk和sed,但我对这些工具没有任何经验..
目标是在一个命令中完成所有操作,并编写一个如下所示的文件:
1;1;Happy Feet;WB;546353;-32.3%;;121;-;4515;2841113;5;Australia, USA;:
2;3;The Departed;WB;435830;-34.8%;;85;-;5127;1149495;2;Unknown;:
3;2;Eragon;Fox;412229;-41.6%;;90;-;4580;1752715;3;UK, USA;:
答案 0 :(得分:2)
您可以使用awk
:
awk -F';' '{gsub("[^0-9.]", "", $5);gsub("[^0-9.]", "", $10);gsub("[^0-9.]", "", $11)}1' OFS=';' inputfile
为了您的输入,它会产生:
1;1;Happy Feet;WB;546353;-32.3%;;121;-;4515;2841113;5;Australia, USA;:
2;3;The Departed;WB;435830;-34.8%;;85;-;5127;1149495;2;Unknown;:
3;2;Eragon;Fox;412229;-41.6%;;90;-;4580;1752715;3;UK, USA;:
编辑:使用awk
执行相同操作的一种惯用方法是使用数组来保留索引:
awk -F';' 'BEGIN{split("5,10,11",a,",")}{for(i in a){gsub("[^0-9]","",$a[i])}}1' OFS=';' inputfile
答案 1 :(得分:1)
您可以使用awk:
awk -F';' '{gsub(/[^0-9]/, "", $5); gsub(/[^0-9]/, "", $10);
gsub(/[^0-9]/, "", $11);} 1' OFS=';' file
1;1;Happy Feet;WB;546353;-32.3%;;121;-;4515;2841113;5;Australia, USA;:
2;3;The Departed;WB;435830;-34.8%;;85;-;5127;1149495;2;Unknown;:
3;2;Eragon;Fox;412229;-41.6%;;90;-;4580;1752715;3;UK, USA;: