我正在尝试提取CSV文件中word=
之后的值,如下所示:
1473228800,0.0,word=google.sentence=Android.something=not_set
1480228800,100.0,word=google_analytics.number=not_set.country=US.source=internet
1493228800,0.0,location=NY.word=Android.sentence=not_set.something=not_set.type=gauge
我需要的输出是(对我来说非常重要的是仅打印“word”及其价值):
1473228800,0.0,word=google
1480228800,100.0,word=google_analytics
1493228800,0.0,word=Android
我尝试使用sed
和awk
,但每个人只给了我很少的csv文件。
这是我最后一次尝试使用awk
:
awk -F "," '{sub(/.*word.*=(.*)\.*/,"word=\1", $3);print $1","$2","$3}'
答案 0 :(得分:1)
awk 解决方案:
awk -F, '{match($3,/word=[^.]+/); print $1,$2,substr($3,RSTART,RLENGTH)}' OFS=',' file
输出:
1473228800,0.0,word=google
1480228800,100.0,word=google_analytics
1493228800,0.0,word=Android
match($3,/word=[^.]+/)
- 匹配第3个字段中所需的序列
substr($3,RSTART,RLENGTH)
- 从第3个字段中提取匹配的序列
match()函数将预定义变量 RSTART 设置为 指数。它还将预定义变量 RLENGTH 设置为长度 匹配子字符串的字符。
答案 1 :(得分:1)
尝试:
List<UserAccountViewModel>
将字段分隔符设为,然后用字符串字替换&gt; 8word。然后从DOT替换为$ 3中的NULL,因为我们根据您的问题不需要它。然后打印第一个,第二个和第三个字段,将输出字段分隔符设置为逗号。