2017-08-28 44 views
1

代替我有一个名为sfe_mail.txt文件,其中有查找和AWK

Katia Dargains 
Artur Santos 
Marcio Breder 
Luis Plum 
Michel Aguiar 
Vinicius Lourenco 
Willian Wendling 
Paulo Araujo 

我想用一个点来代替空格和制表符在单词之间的内容。

我已发出命令:

awk '{ gsub (/ \t+/,".");print}' sfe_mail.txt 

但它不是working.Can你告诉什么是错

回答

4

制表符和空格在awk中的默认的分隔。输出字段分隔符设置为.,与$1=$1和输出重建记录:

$ awk -v OFS="." '{$1=$1;print}' file 
Katia.Dargains 
Artur.Santos 
Marcio.Breder 
Luis.Plum 
Michel.Aguiar 
Vinicius.Lourenco 
Willian.Wendling 
Paulo.Araujo 

如果你坚持要用gsub

$ awk '{gsub(/[\t ]+/,".");print}' file 

你匹配的正则表达式为/ \t+/即。 2个空格和一个或多个选项卡。

+1

建议awk的工作的罚款 – sromit

2

简单的sed替代:

sed 's/[[:space:]]\+/./' file 

至于AWK,下面一个是最简单的为您的情况:

awk '{ print $1"."$2 }' file 
1

简单的解决方案使用的awk

awk '{ print $1"."$2 }' sfe_mail.txt 

您也可以尝试TR如@詹姆斯在评论

tr -s '[:blank:]' . < sfe_mail.txt 
+1

感谢。 !运作良好。 – nagendra547