这个问题可能很简单,我是自然语言处理的新手。我有百万行,如下例所示。我想将一行中的最后一场比赛换成另一场比赛。
我的问题是这样的
user,user,' i got the sims 3'
user,user,
user,user,' cheer up liz'
user,user,' you ok mate? do you have skype btw?'
user,user,
user,user,' i just played give it away in response to your tweet'
预期输出
user,user,' i got the sims 3'
user,user, 'hi'
user,user,' cheer up liz'
user,user,' you ok mate? do you have skype btw?'
user,user, 'hi'
user,user, 'hi'
user,user,' i just played give it away in response to your tweet'
我已尝试 sed 替换行末尾的代码,但未使用以下代码
sed 's/,$/,""/g' filename > filename 2
sed 's/user,user,$/user,user,""/g' filename > filename 2
sed 's/,$/,''/g' filename > filename 2
sed 's/user,user,$/user,user,''/g' filename > filename 2
答案 0 :(得分:1)
使用awk
即可:
awk -v sq="'" 'BEGIN{FS=OFS=","} $3 ~ /^[[:blank:]]*$/{ $3 = " " sq "hi" sq } 1' file
user,user,' i got the sims 3'
user,user, 'hi'
user,user,' cheer up liz'
user,user,' you ok mate? do you have skype btw?'
user,user, 'hi'
user,user,' i just played give it away in response to your tweet'
答案 1 :(得分:0)
将您的sed代码放在双引号内。
sed "s/,[[:blank:]]*$/, 'hi'/" file