当匹配时,我如何找到,匹配和替换行尾

时间:2015-03-20 14:13:21

标签: regex linux bash awk sed

这个问题可能很简单,我是自然语言处理的新手。我有百万行,如下例所示。我想将一行中的最后一场比赛换成另一场比赛。

我的问题是这样的

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

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
相关问题