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 cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.