AWK:在第二列中用下划线替换空格

时间:2012-05-31 08:35:05

标签: awk

我有一个2列,tab delimiterde文件:

email@address   Name Fullname

(注意:NameFullname之间是空格)


我想得到的是一个mutt别名文件:

alias nickname Name Fullname email@address

(注意:这里没有标签,一切都是空格。)


我修好了

awk -F "\t" '{ print "alias" " " $2 " " $2 " " $1 }' $FILE

给了我:

  

别名姓名全名姓名全名电子邮件@地址

但我想得到:

alias Name_Fullname Name Fullname email@address

那么,如何用下划线替换第二列中的所有空格? 感谢


我试过

awk -F "\t" '{ print "alias" " " sub(/ /,"_",$2) " " $2 " " $1 }' $FILE

但这让我很奇怪:

alias 1 Name_Fullname email@ddress

2 个答案:

答案 0 :(得分:1)

试试这个:

awk -F "\t" '{x=$2;print "alias" " " gsub(/ /,"_",x) " " $2 " " $1 }' $FILE 

答案 1 :(得分:0)

使用默认输入分隔符怎么样:

awk '{printf "alias %s %s_%s %s %s %s\n", $2, $3, $2, $3, $1}' $FILE