Banner top Trường Thịnh

1800 6025(0đ//Phút)

tìm cửa hàng

Cách đọc file văn bản trong Powershell nhanh chóng và dễ dàng

Website truongthinh.info có bài Cách đọc file văn bản trong Powershell nhanh chóng và dễ dàngPowerShell hiểu tầm quan trọng này của các file văn bản và giúp dễ dàng truy xuất hay đọc chúng một cách dễ dàng. Trong bài viết này, Truongthinh.info có thể chỉ cho bạn cách đọc file văn bản trong PowerShell.

Các file văn bản có mặt ở khắp mọi nơi và bạn bắt buộc phải đọc qua chúng, bất kể vai trò hay trách nhiệm công việc của bạn là gì. Trên thực tế, nếu là một chuyên gia CNTT, bạn sẽ phải tạo, đọc hoặc làm việc với những file văn bản đều đều hơn, vì chúng có nhiều định dạng. Tính linh hoạt này cũng từng làm cho những file văn bản trở thành cách thuận lợi nhất để định vị script, lưu giữ chi tiết cấu hình, v.v…

PowerShell hiểu tầm quan trọng này của các file văn bản và giúp dễ dàng truy xuất hay đọc chúng 1 cách dễ dàng. Trong bài viết này, Truongthinh.info cũng có thể có thể chỉ cho bạn cách đọc file văn bản trong PowerShell.

Đọc toàn bộ nội dung

Đọc toàn bộ nội dung

Đọc toàn bộ nội dung

Khi bạn mong muốn đọc toàn bộ nội dung của file văn bản, cách dễ dàng nhất là sử dụng hàm Get-Content tích hợp. Đây là code cho phép bạn làm điều này:

  Get-Content C:logslog01012020.txt  
Nội dung của file này sẽ được hiển thị trong màn hình PowerShell ISE hoặc Command Prompt

Nội dung của file này sẽ được hiển thị trong màn hình PowerShell ISE hoặc Command Prompt

Khi bạn thực thi lệnh này, nội dung của file này sẽ được hiển thị trong màn hình PowerShell ISE hoặc Command Prompt, tùy thuộc vào nơi bạn thực thi.

Bạn cũng cũng có thể di chuyển mọi thứ nội dung sang một biến và sử dụng biến đó để giải quyết thêm, nếu đó là thứ mà bạn muốn code của mình thực hiện.

  $file_data = Get-Content C:logslog01012020.txt  

Bây giờ, bạn cũng có thể có thể sử dụng biến $file_data này để phân tích cú pháp hoặc giải quyết thêm.

Đọc phần nào nội dung

Bạn có thể chọn các dòng muốn đọc

Bạn có thể chọn các dòng muốn đọc

Trong nhiều trường hợp, bạn chỉ cũng có thể phải đọc một phần nhất định của file để tạo nên được thông tin bạn muốn. Tương tự như truy vấn SQL, bạn có thể chọn các dòng muốn đọc và code để thực hành điều ấy là:

  $file_data = Get-Content C:logslog01012020.txt $file_data | Select-Object -First 10  

Như code cho thấy, 10 dòng đầu tiên sẽ được lưu giữ trong biến chứ không phải toàn bộ nội dung. Bạn có thể hiển thị nội dung của biến này hoặc sử dụng nó để giải quyết nhiều hơn.

Tương tự như vậy, chúng ta cũng có thể có thể đọc một vài dòng cuối cùng:

  $file_data = Get-Content C:logslog01012020.txt $file_data | Select-Object -Last 10  

Đọc từng dòng một

Khi muốn đọc file để hiểu nội dung của nó, bạn phải thi hành từng dòng một và tin mừng là, điều ấy cũng có thể có thể với PowerShell. Trong thực tế, có 2 cách để làm điều đó.

Sử dụng Get-Content

Hàm Get-Content đọc mọi dòng trong văn bản và lưu trữ chúng dưới dạng một mảng (array), trong đó mỗi dòng là một phần tử mảng. Trong ví dụ trên, bài viết đã sử dụng một biến để đọc tất cả nội dung.

  $file_data = Get-Content C:logslog01012020.txt  

Nếu xuất loại của biến này, bạn có thể thấy đó là một mảng. Điều này tức là bạn cũng đều có thể chọn ra các dòng cụ thể bằng phương pháp dùng chỉ mục mảng. Ví dụ, nếu muốn đọc dòng đầu tiên, bạn chỉ cần nhập:

  $file_data [0]  

Và lệnh này sẽ hiển thị dòng đầu tiên cho bạn.

  $file_data[1]  

Lệnh này sẽ hiển thị dòng thứ hai (tương tự như vậy với các loại tiếp theo).

Sử dụng lớp StreamReader

Tùy chọn thứ 2 là sử dụng một class (lớp). NET có tên StreamReader.

  $stream_reader = New-Object System.IO.StreamReader{C:logslog01012020.txt}  

Bây giờ, bạn có nội dung của file nhật ký trong biến $stream_reader này và vì nó thuộc về lớp StreamReader , bạn cũng có thể có thể sử dụng nhiều phương thức tích hợp sẵn để xong xuôi được được phần văn bản mình muốn.

Khi bạn nhập:

  $stream_reader.ReadToEnd()  

Lệnh sẽ xuất mọi thứ nội dung trên màn hình của bạn, tựa như như Get-Content.

Để đọc dòng hiện tại, bạn có thể sử dụng phương pháp sau:

  $stream_reader.ReadLine()  

Nhưng một mình lệnh này có thể không hữu ích, vì vậy bạn bắt buộc phải chạy nó trong 1 vòng lặp và đọc nội dung của file văn bản, từng dòng một.

  $stream_reader = New-Object System.IO.StreamReader{C:logslog01012020.txt} $line_number = 1 while (($current_line =$stream_reader.ReadLine()) -ne $null) { Write-Host "$line_number $current_line" $line_number++ }  

Đoạn code trên sẽ bắt đầu với dòng trước mắt và xuất ra từng dòng với số dòng đi kèm để dễ đọc. Bạn cho dù có thể sử dụng bất kỳ phương thức chuỗi có sẵn nào trên biến $current_line để phân tích cú pháp thêm.

Phương pháp này lý tưởng để đọc các file lớn, vì khi bạn lưu giữ nội dung trong một biến, nó cũng đều có thể chiếm quá độ bộ nhớ và ảnh hưởng đến hiệu suất. Vì vậy, đây là 1 cách hiệu quả hơn để đi đến nội dung bạn muốn.

Tìm văn bản cụ thể

Trong nhiều trường hợp, bạn muốn tìm một văn bản cụ thể trong 1 file và cách tốt nhất là sử dụng cmdlet Where-Object để lọc nội dung.

  $file_data = Get-Content C:logslog01012020.txt | Where-Object {$_ -like ‘*error*’}  

Đoạn code trên sẽ xuất ra những dòng có từ “error” trong đó. Ở đây, $_ là một biến biểu thị dòng hiện tại từ nội dung, đến từ Get-Content.

Bên cạnh Where-Object , bạn cũng cũng có thể có thể sử dụng các toán tử match regex để tìm phần văn bản chính xác mà bạn muốn.

Thêm tùy chọn với Get-Content

Get-Content là một cmdlet rất linh hoạt kèm theo với nhiều tùy chọn. Dưới đây là một số điều bạn cũng đều có thể làm với nó.

Đếm con số dòng trong file

Bạn cũng đều có thể muốn biết con số dòng có sẵn trong file. Code để thực hiện việc đó là:

  $file_data = Get-Content C:logslog01012020.txt | Measure-Object  

Chọn số dòng cụ thể ở đầu và cuối

Trước đó, bạn đã tìm hiểu cách chọn một vài dòng đầu tiên hoặc vài dòng cuối bằng phương pháp dùng cmdlet Select-Object. Bạn cũng cũng đều có thể nhận được kết quả tựa như bằng phương pháp sử dụng một số phương thức tích phù hợp với Get-Content.

Để có được 1 vài dòng đầu tiên, phương thức là:

  $file_data = Get-Content C:logslog01012020.txt -TotalCount 3  

Lệnh này sẽ trả về 3 dòng trước mắt từ file.

  $file_data = Get-Content C:logslog01012020.txt -Tail 3  

Lệnh này sẽ trả về 3 dòng cuối cùng từ file.

File cập nhật liên tục

Giả sử file nhật ký của bạn được cập nhật liên tục và bạn muốn xem phần cuối của file nhật ký đó để đọc các giá trị mới nhất được update. Bạn cũng đều có thể thêm tham số Wait , như thế này:

  $file_data = Get-Content C:logslog01012020.txt -Tail 3 -Wait  

Lệnh này sẽ liên tiếp theo dõi file nhật ký để tìm các dòng mới được thêm và hiển thị cho bạn.

Từ khóa bài viết: truongthinh.info, Powershell, đọc file văn bản, đọc file văn bản trong Powershell, cách đọc file văn bản trong Powershell

Bài viết Cách đọc file văn bản trong Powershell nhanh chóng và dễ dàng được tổng hợp và biên tập bởi: truongthinh.info. Mọi ý kiến đóng góp và phản hồi vui lòng gửi Liên Hệ cho truongthinh.info để điều chỉnh. truongthinh.info xin cảm ơn.