2012-10-16 26 views
6

Jak mogę usunąć spację między nazwą a nazwiskiem z ciągu znaków, używając awk? większość przykładów dotyczy przekierowania danych z wiersza poleceń do awk, ale muszę manipulować ciągiem wewnątrz skryptu awk.usuwanie spacji z ciągu znaków przez awk

Convert to:

"steve john" 

do:

"stevejohn" 

mam zmienną string który poprosiłem użytkownikowi wejście wewnątrz skryptu awk. Muszę usunąć spacje.

+1

'awk '{print $ 1 $ 2}' filename' lub' echo "hi gh" | awk '{print $ 1 $ 2}' '' –

+0

Jeśli masz odpowiedź na temat tworzenia skryptów powłoki, edytuj swoje pytanie, aby uwzględnić to, czego próbujesz. –

Odpowiedz

13

gsub jest twoim przyjacielem. Poniższe polecenie w zasadzie przeprowadza globalne zastąpienie wyrażenia regularnego (w tym przypadku pojedynczą spacją), zastępując je pustym łańcuchem, na obiekcie docelowym $0 (cała linia).

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

Można stosować dowolny cel, w tym jedno wejście przez użytkownika:

pax> awk 'BEGIN {getline xyzzy ; gsub(" ","", xyzzy) ; print xyzzy}' 
hello there my name is pax 
hellotheremynameispax 
3

Zastosowanie sed:

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

Jeśli trzeba użyć awk, to zrobić:

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

Edit:

wewnątrz skryptu bash, można to zrobić:

s="steve john" # user input 
t=$(echo $s | gawk '{print $1 $2}') 
echo $t 
+0

Mam zmienną łańcuchową, którą poprosiłem użytkownika o wpisanie wewnątrz skryptu awk. Muszę usunąć spacje – femchi

+0

Proszę zobaczyć moją zredagowaną odpowiedź. –

+0

pamiętaj, aby zacytować swoje zmienne ("$ s" nie $ s) i tak naprawdę nie nazwałbyś zewnętrznego polecenia, aby to zrobić w bashu, użyłbyś wbudowanych powłok: s = "steve john"; echo "$ {s //}" stevejohn –

1
echo "john smith aaa " |\ 
awk 'BEGIN {FS=" "; OFS=""} {for(i=1;i<=NF;++i) {out = out OFS $i}} END {print out;}' 
+0

lub możesz użyć polecenia "sed". sed jest powszechnie używany do usuwania lub zamiany ciągów znaków z danych wejściowych. – trillions

Powiązane problemy