为什么我的指令集不能用?它只会返回原始文件。我的文件看起来如下(几百行):
1 Germany 1765 0 Equal
2 Argentina 1631 0 Equal
3 Colombia 1488 1 Up
4 Netherlands 1456 -1 Down
5 Belgium 1444 0 Equal
6 Brazil 1291 1 Up
7 Uruguay 1243 -1 Down
8 Spain 1228 -1 Down
9 France 1202 1 Up
...
192 US Virgin Islands 28 -1 Down 我想要这个:
Germany,1
Argentina,2
Colombia,3
...
US Virgin Islands,192这就是我尝试过的准则:
sed 's/\([0-9]*\)\t\([a-zA-Z]*\)/\2,\1/g' <fifa.csv >fifa.csv但它只返回原始文件。编辑:现在我试了
sed 's/\([0-9]*\)\t\([a-zA-Z]*\)/\2,\1/g' <fifa.csv >fifa.csv并得到了
,1 Germany,,1765Equal,0,
,2 Argentina,,1631Equal,0,
,3 Colombia,,1488Up,1,
,4 Netherlands,,1456-Down,1,
,5 Belgium,,1444Equal,0,发布于 2014-10-10 00:19:38
如果字段为制表符分隔,您可以尝试下面的sed命令。
sed 's/^\([0-9]\+\)\t\([^\t]*\).*/\2,\1/' file添加内联编辑选项-i以保存所做的更改。
sed -i 's/^\([0-9]\+\)\t\([^\t]*\).*/\2,\1/' file^指的是线锚的开始。+会重复前一个字符一次或多次。基本sed使用BRE,因此您需要转义+来执行重复前一个字符一次或多次的功能。[^\t]*匹配任何字符,但不匹配\t选项卡字符0或更多次。
发布于 2014-10-10 00:20:36
下面是你要找的东西。-i选项指定要就地编辑文件.
sed -i 's/^\([0-9]\+\)\t\([^\t]*\).*/\2,\1/' fifa.csv发布于 2014-10-10 06:13:49
awk '{print( $2 "," $1)}' YourFile不是sed,而是更容易管理
https://stackoverflow.com/questions/26289901
复制相似问题