如何使用awk从字符串中删除名称和姓氏之间的空格? 大部分示例都是关于将数据从命令行重定向到awk,但我需要在awk脚本中操作字符串。awk从字符串中删除空格
转换这样的:
"steve john"
到:
"stevejohn"
我有一个字符串变量,我要求用户输入一个awk脚本中。我需要删除空格。
如何使用awk从字符串中删除名称和姓氏之间的空格? 大部分示例都是关于将数据从命令行重定向到awk,但我需要在awk脚本中操作字符串。awk从字符串中删除空格
转换这样的:
"steve john"
到:
"stevejohn"
我有一个字符串变量,我要求用户输入一个awk脚本中。我需要删除空格。
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
使用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
我有一个字符串变量,我要求用户在awk脚本中输入内容。我需要删除空格 – femchi
请看我编辑的答案。 – 2012-10-16 08:32:42
记得引用你的变量(“$ s”不是$ s),并且你不会真的调用外部命令来在bash中这样做,你会使用shell内建的:s =“steve john”; echo“$ {s //}” stevejohn –
echo "john smith aaa " |\
awk 'BEGIN {FS=" "; OFS=""} {for(i=1;i<=NF;++i) {out = out OFS $i}} END {print out;}'
或者您可以使用“sed”命令。 sed通常用于从输入中删除或替换字符串。 – trillions
'的awk '{打印$ 1 $ 2}' filename'或'回声 “嗨GH” | awk'{print $ 1 $ 2}'' –
如果您有关于构建shell脚本的答案,请编辑您的问题以包含您尝试的内容。 – 2012-10-16 08:33:37