2012-10-16 43 views
6

Làm cách nào để xóa không gian nằm giữa tên và họ từ chuỗi bằng cách sử dụng awk? hầu hết các ví dụ là về chuyển hướng dữ liệu từ dòng lệnh đến awk nhưng tôi cần phải thao tác một chuỗi bên trong một kịch bản awk.xóa một dấu cách khỏi chuỗi bằng cách awk

Chuyển đổi này:

"steve john" 

tới:

"stevejohn" 

Tôi có một biến chuỗi mà tôi hỏi người sử dụng đầu vào bên trong một kịch bản awk. Tôi cần phải loại bỏ các không gian.

+1

'awk '{print $ 1 $ 2}' filename' hoặc 'echo "hi gh" | awk '{print $ 1 $ 2}' ' –

+0

Nếu bạn có câu trả lời về việc tạo tập lệnh shell, vui lòng chỉnh sửa câu hỏi của bạn để bao gồm những gì bạn đã thử. –

Trả lời

13

gsub là bạn của bạn. Lệnh sau về cơ bản thực hiện một sự thay thế toàn cầu của một biểu thức chính quy (một không gian đơn trong trường hợp này), thay thế nó bằng một chuỗi rỗng, trên đích $0 (toàn bộ dòng).

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

Bạn có thể sử dụng bất kỳ mục tiêu, trong đó có một đầu vào bởi một người dùng:

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

Sử dụng sed:

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

Nếu bạn phải sử dụng awk, làm điều này:

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

Edit:

Bên trong một kịch bản bash, bạn có thể làm điều này:

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

Tôi có một biến chuỗi mà tôi yêu cầu người dùng nhập vào bên trong một kịch bản awk. Tôi cần phải xóa không gian – femchi

+0

Vui lòng xem câu trả lời đã chỉnh sửa của tôi. –

+0

hãy nhớ trích dẫn các biến của bạn ("$ s" chứ không phải $ s) và bạn sẽ không thực sự gọi một lệnh bên ngoài để làm điều đó trong bash, bạn sẽ dùng shell builtins: 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

hoặc bạn có thể sử dụng lệnh "sed". sed thường được sử dụng để loại bỏ hoặc thay thế các chuỗi từ đầu vào. – trillions

Các vấn đề liên quan