[英]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.