Cách sử dụng Awk để lọc dữ liệu bằng cách sử dụng ký tự $

Trong bài này mình sẽ hướng dẫn sử dụng Awk trong Linux để in ra thông tin các trường và cột của một file trên Linux.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Có thể trong một bảng bạn chỉ cần lấy thông tin của 2 hoặc 3 cột, và awk có một tính năng giúp bạn làm được điều đó. Hãy cùng mình bắt đầu vào tutorial ngày hôm nay nha.

Nếu bạn đã quen thuộc với Linux hay bash shell thì bạn có thể bạn đã biết internal field separator (IFS). Nếu không thì đơn giản bạn có thể hiểu IFS trong awk được xem như là tab hoặc là khoảng cách (space) và đó cũng chính là khoảng ngăn cách giữa các ký tự, đây là cách hoạt động của việc chia tách trường trong awk.

1. Ví dụ 1

Mình có một file demo1.txt như sau:

Bài viết này được đăng tại [free tuts .net]

awk1 png

Mình sẽ in ra 3 trường 1, 2 và 3 bằng cách dùng bằng awk như sau:

awk '//{print $1 $2 $3 }' demo1.txt

awk2 png

Và bạn có thể thêm lần lượt $4 $5 để lấy thêm trường, mỗi trường đều cách nhau bằng khoảng cách hoặc là một tab và phân chia nhau rõ ràng.

Mình tóm tắt lại 1 chút:

  • Trường 1 là William được truy cập vào khi sử dụng $1
  • Trường 2 là Henry được truy cập vào khi sử dụng $2
  • Trường 3 là “Bill" được truy cập khi sử dụng $3
  • Lần lượt mình có thể sử dụng $4 $5 để truy cập tiếp theo

Như bạn thấy, khi mình in dữ liệu ra thì không có khoảng cách và đó chính là cách in mặc định của awk.

Bạn có thể thêm dấu phẩy ( , ) ở mỗi trường để hiển thị một cách rõ ràng hơn.

awk '//{print $1, $2, $3; }' demo1.txt

awk3 png

Một chú ý quan trọng và luôn luôn phải ghị nhớ là cách sử dụng ký tự đô la ( $ ) trong awk sẽ khác cách sử dụng trong shell script.

Trong shell scripting thì ($) được sử dụng để truy cập giá trị của biến. Trong khi đó awk chỉ sử dụng để truy cập nội dung của một trường nhưng không được sử dụng để truy cập giá trị của một biến.

2. Ví dụ 2

Tiếp tục làm thêm một ví dụ nữa để bạn hiểu rõ hơn nha.

Mình có file demo2.txt

awk4 png

Mình ví dụ ở đây có rất nhiều trường nhưng bạn chỉ quan tâm là nó tên là gì và giá bao nhiêu, những trường khác bạn không quan tâm thì tại sao bạn lại cần hiển thị đúng không? Và đây là giải pháp

awk '//{print $2, $3 }' demo2.txt

awk5 png

Thông tin hiển thị ra đã khá ok nhưng cũng chưa được rõ lắm. Bây giờ bạn có thể sử dụng awk và thêm vài thông số như sau.

awk '//{printf "%-20s %s\n",$2, $3 }' demo2.txt

awk6 png

Khá xịn phải không nào :)

Lệnh printf là lệnh giúp bạn giúp bạn format lại định dạng hiển thị dữ liệu theo một cách riêng nào đó.

Các bạn có thể thực hành bằng cách tải các file trong link github sau: https://github.com/AnTienTL/awk-learning

Lời kết: Chỉnh sửa trường là điều rất quan trọng khi sử dụng awk để lọc những đoạn văn bản, giúp loại bỏ những thông tin dư thừa, Và một lần nữa mình muốn nhấn mạnh rằng cách sử dụng ( $ ) trong awk thì sẽ luôn khác cách sử dụng ( $ ) trong shell scripting.

Cùng chuyên mục:

Hướng dẫn cấu hình Mail Server trên CentOs 6.5

Hướng dẫn cấu hình Mail Server trên CentOs 6.5

Cách dùng lệnh Users trong Linux để xem user đang online

Cách dùng lệnh Users trong Linux để xem user đang online

Nếu bạn đang là quản trị viên thì việc quản lý thông tin / xem…

Cách sử dụng lệnh Wall trong Linux

Cách sử dụng lệnh Wall trong Linux

Wall là một công cụ dòng lệnh giúp hiển thị thông báo đến tất cả…

Cách dùng lệnh Whereis trong Linux

Cách dùng lệnh Whereis trong Linux

Whereis là một tiện ích dòng lệnh command line, nó cho phép bạn tìm ..

Cách sử dụng lệnh Which trong Linux

Cách sử dụng lệnh Which trong Linux

Linux dùng lệnh which để xác định vị trí file thực thi của lệnh mà…

Cách sử dụng lệnh whoami trong Linux

Cách sử dụng lệnh whoami trong Linux

Giống như tên gọi của nó, lệnh whoami in tên người dùng đang chạy ...

Cách dùng lệnh zcat trong Linux

Cách dùng lệnh zcat trong Linux

Mặc dù tính năng nén file rất hữu ích vì nó giúp ta tiết kiệm…

Hiểu rõ hơn về chmod 777 trong Linux

Hiểu rõ hơn về chmod 777 trong Linux

Bạn đang xây dựng một website và sử dụng tính năng upload ...

Cách sử dụng lệnh tail trong Linux

Cách sử dụng lệnh tail trong Linux

Mặc định thì lệnh tail sẽ hiển thị 10 dòng cuối cùng của file, thông…

Cách sử dụng lệnh Head trong Linux

Cách sử dụng lệnh Head trong Linux

Trong quá trình quản trị dữ liệu trên Linux đôi khi bạn muốn xem nhanh…

Cách sử dụng lệnh Whatis trong Linux

Cách sử dụng lệnh Whatis trong Linux

Trong bài này chúng ta sẽ tìm hiểu lệnh whatis trong ...

Cách sử dụng lệnh kill trong Linux

Cách sử dụng lệnh kill trong Linux

Linux là một hệ điều hành rất nhanh nhưng không phải lúc nào nó không…

Cách dùng lệnh who trong Linux

Cách dùng lệnh who trong Linux

Who là một công cụ dòng lệnh command-line, được ...

Cách dùng lệnh basename trong Linux

Cách dùng lệnh basename trong Linux

basename là một tiện ích dòng lệnh (command line) dùng để lấy ...

Cách sử dụng lệnh gzip trên Linux

Cách sử dụng lệnh gzip trên Linux

Gzip là một trong những thuật toán nén file phổ biến nhất, nó cho phép…

Cách dùng lệnh wait trong Linux

Cách dùng lệnh wait trong Linux

Wait là lệnh dùng để đợi một thời gian cho tới khi công việc nào…

Cách dùng lệnh ping trong Linux

Cách dùng lệnh ping trong Linux

Lệnh ping là một trong những công cụ được sử dụng nhiều nhất để khắc…

Cách dùng lệnh sleep trong Linux

Cách dùng lệnh sleep trong Linux

sleep là một tiện ích command line cho phép lập trình viên ..

Các ví dụ học Bash Script trong Linux cơ bản nhất

Các ví dụ học Bash Script trong Linux cơ bản nhất

Bash Script đuọc xem là mã code lập trình trên Linux ...

Vòng lặp until trong Shell Script

Vòng lặp until trong Shell Script

Top