10

awkを使用して、名前と姓の間にあるスペースを文字列から削除するにはどうすればよいですか?ほとんどの例は、コマンドラインからawkにデータをリダイレクトすることに関するものですが、awkスクリプト内の文字列を操作する必要があります。

これを変換します:

"steve john"

に:

"stevejohn"

awkスクリプト内に入力するようにユーザーに依頼した文字列変数があります。スペースを削除する必要があります。

4

3 に答える 3

20

gsubあなたの友達です。次のコマンドは、基本的に、正規表現 (この場合は 1 つのスペース) のグローバルな置換を行い、ターゲット$0(行全体) で空の文字列に置き換えます。

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

ユーザーによる 1 つの入力を含め、任意のターゲットを使用できます。

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 に答える