2010-10-19 29 views
11

Giả sử tôi có câu này:Cách chọn một cột nhất định từ một dòng văn bản?

 
My name is bob. 

Và tôi muốn sao chép từ "là" từ câu nói đó vào một biến. Làm cách nào để truy cập từ đó mà không biết trước từ mà tôi đang tìm kiếm? Nếu tôi biết một từ hoặc chuỗi cụ thể nằm trong cột văn bản thứ ba trong dòng văn bản năm cột, làm thế nào tôi có thể lấy từ trong cột thứ ba?

Tôi đang sử dụng vỏ bourne.

+0

Hãy xem sed và awk để làm điều này loại chế biến . –

Trả lời

16
word=$(cut -d ' ' -f 3 filename) 

cut cung cấp cho chúng tôi trường thứ ba của mỗi dòng (trong trường hợp này là 1). -d được sử dụng để chỉ định không gian làm dấu phân tách. $() bắt đầu ra, sau đó chúng tôi gán nó cho biến số word.

+0

Tôi không tin rằng đuôi được yêu cầu từ ý nghĩa của OP, dòng chữ số hàng đầu (hiện đã bị xóa) được đặt cách nhau để chỉ ra các cột thay vì là nội dung. –

+0

@Roger, tôi nghĩ bạn nói đúng. Tôi đã cập nhật nó. –

6

bạn có thể sử dụng một trong hai cut, awk vv

Ví dụ:

awk '{print $3}' my_file.txt 
0
sentence='My name is bob.' 
set -- $sentence 
echo $3 

hoặc

sentence='My name is bob.' 
set -- $sentence 
shift 2 # or use a variable 
echo $1 
Các vấn đề liên quan