首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >足球数据Regex

足球数据Regex
EN

Stack Overflow用户
提问于 2014-10-10 00:06:13
回答 3查看 67关注 0票数 0

为什么我的指令集不能用?它只会返回原始文件。我的文件看起来如下(几百行):

代码语言:javascript
复制
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    

我想要这个:

代码语言:javascript
复制
Germany,1
Argentina,2
Colombia,3
...
US Virgin Islands,192

这就是我尝试过的准则:

代码语言:javascript
复制
 sed 's/\([0-9]*\)\t\([a-zA-Z]*\)/\2,\1/g' <fifa.csv >fifa.csv

但它只返回原始文件。编辑:现在我试了

代码语言:javascript
复制
sed 's/\([0-9]*\)\t\([a-zA-Z]*\)/\2,\1/g' <fifa.csv >fifa.csv

并得到了

代码语言:javascript
复制
,1 Germany,,1765Equal,0,
,2 Argentina,,1631Equal,0,
,3 Colombia,,1488Up,1,
,4 Netherlands,,1456-Down,1,
,5 Belgium,,1444Equal,0,
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-10 00:19:38

如果字段为制表符分隔,您可以尝试下面的sed命令。

代码语言:javascript
复制
sed 's/^\([0-9]\+\)\t\([^\t]*\).*/\2,\1/' file

添加内联编辑选项-i以保存所做的更改。

代码语言:javascript
复制
sed -i 's/^\([0-9]\+\)\t\([^\t]*\).*/\2,\1/' file

^指的是线锚的开始。+会重复前一个字符一次或多次。基本sed使用BRE,因此您需要转义+来执行重复前一个字符一次或多次的功能。[^\t]*匹配任何字符,但不匹配\t选项卡字符0或更多次。

票数 1
EN

Stack Overflow用户

发布于 2014-10-10 00:20:36

下面是你要找的东西。-i选项指定要就地编辑文件.

代码语言:javascript
复制
sed -i 's/^\([0-9]\+\)\t\([^\t]*\).*/\2,\1/' fifa.csv
票数 1
EN

Stack Overflow用户

发布于 2014-10-10 06:13:49

代码语言:javascript
复制
awk '{print( $2 "," $1)}' YourFile

不是sed,而是更容易管理

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26289901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档