10

如何使用 awk 从字符串中删除名称和姓氏之间的空格?大多数示例都是关于将数据从命令行重定向到 awk,但我需要在 awk 脚本中操作字符串。

转换这个:

"steve john"

到:

"stevejohn"

我有一个字符串变量,我要求用户在 awk 脚本中输入。我需要删除空格。

4

3 回答 3

20

gsub是你的朋友。以下命令基本上对正则表达式(在本例中为单个空格)进行全局替换,在目标$0(整行)上将其替换为空字符串。

pax> echo "steve john" | awk '{ gsub (" ", "", $0); print}'
stevejohn

您可以使用任何目标,包括用户的一个输入:

pax> awk 'BEGIN {getline xyzzy ; gsub(" ","", xyzzy) ; print xyzzy}'
hello there my name is pax
hellotheremynameispax
于 2012-10-16T08:31:30.873 回答
6

使用sed

$ echo "steve john" | sed 's/ //g'
stevejohn

如果必须使用awk,请执行以下操作:

$ echo "steve john" | gawk '{print $1 $2}'
stevejohn

编辑:

在 bash 脚本中,您可以执行以下操作:

s="steve john" # user input
t=$(echo $s | gawk '{print $1 $2}')
echo $t
于 2012-10-16T08:30:01.267 回答
1
echo "john smith aaa " |\
awk 'BEGIN {FS=" "; OFS=""} {for(i=1;i<=NF;++i) {out = out OFS $i}} END {print out;}'
于 2012-10-16T08:38:49.460 回答