簡體   English   中英

使用awk解析制表符分隔的文件,該文件中的字段中包含逗號

[英]Parse a tab separated file that contains commas in the fields with awk

我想使用awk刪除以下輸入文件的第二個字段中“:”之后的所有值。

輸入項

text1   [a:2,b:1,c:4,k:0]
text2   [d:1,a:5,f:3.2]

輸出量

text1   a,b,c,k
text2   d,a,f

我能夠使用R做到這一點,但是在較大的文件上有點慢。

使用sed (假設您也想刪除括號):

$ sed 's/\[\|:[^,]*//g' file
text1   a,b,c,k
text2   d,a,f

使用awk

$ awk '{gsub(/\[|:[^,]*/,"")}1' file
text1   a,b,c,k
text2   d,a,f

另一種方法:

awk '{
  printf "%s ", $1
  n = split($2, a, /[][,:]/)
  sep=""
  for (i=2; i<n; i+=2) {
    printf "%s%s", sep, a[i]
    sep=","
  }
  print ""
}' <<END
text1   [a:2,b:1,c:4,k:0]
text2   [d:1,a:5,f:3.2]
END
text1 a,b,c,k
text2 d,a,f

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM