首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用linux将数据转换成所需的形式

问使用linux将数据转换成所需的形式
EN

Stack Overflow用户
提问于 2014-07-06 04:05:45
回答 1查看 47关注 0票数 0

在选项卡分隔的文件中有数据,格式如下(filename.tsv):

代码语言:javascript
复制
#a      0 Espert       A trius
#b      9 def          J

我想将这些数据转换成以下表格(我在这里每一行介绍一次):

代码语言:javascript
复制
#@<a>
<0 Espert> <abc> <A trius>.
#@<b>
<9 def> <abc> <J>.

我正在介绍每一行。我知道如何使用使用csv模块的python来做同样的事情。但是我正在尝试学习linux命令,在linux终端中是否有一种方法可以使用像grep这样的linux命令呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-06 04:59:33

awk似乎是适合这项工作的工具:

代码语言:javascript
复制
awk '{ 
   printf "#@<%s>\n<%s %s> <abc> <%s%s%s>.\n", 
    substr($1,2),
    $2, 
    $3, 
    $4, 
    (length($5) ?  " " : ""),
    $5
 }' filename.tsv
  • awk遍历输入文件中的所有行,并通过运行制表符和/或空格将每一行拆分为字段;$1将第一个字段$2引用为第二个字段,.
  • printf函数与C中相同:包含占位符的格式(模板)字符串后面跟着相应的参数来替换占位符。
  • substr($1,2)返回从第二个字符开始的第一个字段的子字符串(即第一行的a,第二行的b )--注意awk中的索引是基于1的。
  • (length($5) ? " " : "")是一个C样式的三元表达式,如果第5个字段为非空字段,则返回一个空格,否则返回一个空字符串。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24592611

复制
相关文章

相似问题

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