Làm cách nào để hạn chế grep chỉ tìm kiếm bên dưới mã thông báo của cột?


0

Làm cách nào tôi có thể sử dụng grep để chỉ tìm kiếm các giá trị của cột bên dưới mã thông báo? Ví dụ: trong tệp CSV sau:

ABC  
1      4      5  
2      3      0  
1      3      6

... Làm thế nào tôi chỉ có thể nhận được các giá trị của cột B?

Câu trả lời:


4

Tôi không chắc bạn có thể làm điều này với grep, tuy nhiên bạn có thể sử dụng awk:

awk '{ print $2}' file.csv

Nó sẽ in ra cột thứ hai của tập tin của bạn.


CHỈNH SỬA

Nếu bạn không muốn in tên cột ra ( Btrong ví dụ), bạn có thể đặt điều kiện trên FNR:

FNR Số bản ghi đầu vào trong tệp đầu vào hiện tại.

Như thế này:

awk ' FNR > 1 { print $2}' file.csv

CHỈNH SỬA 2

Nếu tệp của bạn là tệp CSV thực (giá trị được phân tách bằng dấu phẩy), bạn phải cung cấp đối số dấu tách trường ( -Fhoặc --field-separator):

awk -F',' ' FNR > 1 { print $2}' file.csv

2

Sử dụng grep trong lệnh theo câu hỏi.

cat file.csv | cut -d " " -f 2 | grep -o '[0-9]'

Trong đó cut -d (dấu phân cách là "") bằng cách sử dụng khoảng trắng hoặc "," khi csv là dấu phẩy và -f 2 là trường thứ hai

grep -o là - khớp

Chỉnh sửa để cho phép trường không số mất grep

cat file.csv | cut -d " " -f2 | tail -n +2
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.