首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套的awk命令

嵌套的awk命令
EN

Stack Overflow用户
提问于 2014-05-20 22:45:44
回答 2查看 11.8K关注 0票数 1

我有一个使用以下语法的文件:

代码语言:javascript
复制
foo:bar:value1,value2,value3,...:foo:bar

我想获取没有固定长度的值列表(空格分隔):

代码语言:javascript
复制
value1 value2 value3 ...

有没有一种方法可以在一个awk命令中做到这一点?而不是像这样的管道命令:

代码语言:javascript
复制
awk -F: '{print $3}' myfile.txt | awk -F, '{OFS=" "; $1 = $1; print $0}'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-20 23:49:12

如果您知道要获取csv分隔值的字段,那么也可以使用gsub函数:

代码语言:javascript
复制
awk -F: '{gsub(/,/," ",$3);print $3}' file
代码语言:javascript
复制
$ cat file
foo:bar:value1,value2,value3,value3:foo:bar
foo:bar:value1,value2:foo:bar
foo:bar:value1,value2,value3,value4,value5,value6:foo:bar
代码语言:javascript
复制
$ awk -F: '{gsub(/,/," ",$3);print $3}' file
value1 value2 value3 value3
value1 value2
value1 value2 value3 value4 value5 value6
票数 6
EN

Stack Overflow用户

发布于 2014-05-20 22:50:06

你可以使用Awk的split()函数来做额外的拆分。

代码语言:javascript
复制
awk -F : '{ split($3, a, ","); print a[1], a[2], a[3] }' file
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23763046

复制
相关文章

相似问题

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