我有一个使用以下语法的文件:
foo:bar:value1,value2,value3,...:foo:bar我想获取没有固定长度的值列表(空格分隔):
value1 value2 value3 ...有没有一种方法可以在一个awk命令中做到这一点?而不是像这样的管道命令:
awk -F: '{print $3}' myfile.txt | awk -F, '{OFS=" "; $1 = $1; print $0}'发布于 2014-05-20 23:49:12
如果您知道要获取csv分隔值的字段,那么也可以使用gsub函数:
awk -F: '{gsub(/,/," ",$3);print $3}' file$ 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$ awk -F: '{gsub(/,/," ",$3);print $3}' file
value1 value2 value3 value3
value1 value2
value1 value2 value3 value4 value5 value6发布于 2014-05-20 22:50:06
你可以使用Awk的split()函数来做额外的拆分。
awk -F : '{ split($3, a, ","); print a[1], a[2], a[3] }' filehttps://stackoverflow.com/questions/23763046
复制相似问题