จะนับบรรทัดในไฟล์ใน PowerShell ได้อย่างไร
เมื่อเร็วๆ นี้เท่านั้น ขณะที่ทำงานเกี่ยวกับข้อกำหนดระบบไฟล์ใน PowerShell ฉันจำเป็นต้องนับจำนวนบรรทัดที่แสดงในไฟล์โดยใช้ PowerShell ฉันลองวิธีการต่างๆ ในบทช่วยสอน PowerShell นี้ เราจะสำรวจวิธีการต่างๆ เพื่อนับบรรทัดในไฟล์โดยใช้ PowerShell พร้อมตัวอย่าง
ในการนับบรรทัดในไฟล์โดยใช้ PowerShell คุณสามารถใช้ Get-Content cmdlet รวมกับ Measure-Object ตัวอย่างเช่น $lineCount=(Get-Content 'C:\path\to\file.txt' | Measure-Object -Line).Lines จะให้จำนวนบรรทัดทั้งหมดใน 'file.txt' วิธีการนี้มีประสิทธิภาพสำหรับไฟล์ทุกขนาดและเป็นแนวทางมาตรฐานใน PowerShell สำหรับงานนับบรรทัด
ให้เราตรวจสอบวิธีการต่างๆ ในการนับแถวในไฟล์ข้อความโดยใช้ PowerShell
วิธีที่ 1: การใช้ Get-Content และ Measure-Object
วิธีที่ง่ายและตรงไปตรงมาที่สุดในการนับบรรทัดในไฟล์ใน PowerShell คือการใช้ cmdlet Get-Content เพื่ออ่านไฟล์และส่งเอาต์พุตไปยัง cmdlet Measure-Object เพื่อนับเส้น
นี่คือสคริปต์ที่สมบูรณ์
$filePath = "C:\MyFolder\file.txt"
$lineCount = (Get-Content $filePath | Measure-Object -Line).Lines
Write-Host "The file has $lineCount lines."
ในสคริปต์นี้ Get-Content อ่านไฟล์ในเส้นทางที่ระบุ และ Measure-Object -Line คำนวณจำนวนบรรทัด คุณสมบัติ .Lines ให้จำนวนจริงแก่เรา ซึ่งเราจะส่งออกออกมา
ฉันรันสคริปต์ด้านบนโดยใช้โค้ด VS และคุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่าง:
วิธีที่ 2: การสตรีมรับเนื้อหาสำหรับไฟล์ขนาดใหญ่
สำหรับไฟล์ขนาดใหญ่ วิธีการข้างต้นอาจใช้หน่วยความจำมาก เนื่องจาก Get-Content อ่านไฟล์ทั้งหมดลงในหน่วยความจำ เพื่อจัดการไฟล์ขนาดใหญ่ได้อย่างมีประสิทธิภาพมากขึ้น คุณสามารถสตรีมเนื้อหาไฟล์และนับบรรทัดทีละบรรทัดได้ วิธีนี้ช้ากว่าแต่ใช้หน่วยความจำน้อยกว่า
$filePath = "C:\path\to\your\largefile.txt"
$lineCount = 0
Get-Content $filePath -ReadCount 0 | ForEach-Object { $lineCount++ }
Write-Host "The file has $lineCount lines."เมื่อใช้ -ReadCount 0 Get-Content จะสตรีมไฟล์ทีละบรรทัด และ ForEach-Object loop จะเพิ่มจำนวนบรรทัดสำหรับแต่ละบรรทัด .
วิธีที่ 3: การใช้สคริปต์ PowerShell สำหรับหลายไฟล์
หากคุณต้องการนับบรรทัดในไฟล์ข้อความหลายไฟล์ภายในโฟลเดอร์ คุณสามารถใช้สคริปต์ PowerShell เพื่อวนซ้ำแต่ละไฟล์และนับบรรทัดได้
$folderPath = "C:\MyFolder"
Get-ChildItem $folderPath -Filter *.txt | ForEach-Object {
$file = $_
$lineCount = (Get-Content $file.FullName | Measure-Object -Line).Lines
Write-Host "The file $($file.Name) has $lineCount lines."
}ที่นี่ Get-ChildItem จะดึงข้อมูลไฟล์ .txt ทั้งหมดในโฟลเดอร์ที่ระบุ และสำหรับแต่ละไฟล์ เราจะนับบรรทัดโดยใช้ Get-Content และ Measure-Object cmdlets
คุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่าง มันแสดงจำนวนบรรทัดที่ปรากฏในแต่ละไฟล์ข้อความภายในโฟลเดอร์
วิธีที่ 4: การนับบรรทัดด้วย Get-Content และ Select-Object
อีกวิธีในการนับบรรทัดในไฟล์ใน PowerShell คือการใช้ Get-Content ร่วมกับ Select-Object
นี่คือสคริปต์ PowerShell ที่สมบูรณ์เพื่อนับบรรทัดที่แสดงในไฟล์
$filePath = "C:\MyFolder\file.txt"
$lineCount = (Get-Content $filePath | Select-Object -Last 1).LineNumber
Write-Host "The file has $lineCount lines."วิธีการนี้มีประโยชน์อย่างยิ่งเมื่อคุณต้องการเรียกดูและแสดงบรรทัดบางบรรทัดจากไฟล์ ไม่ใช่แค่นับจำนวนบรรทัดทั้งหมด
วิธีที่ 5: การนับอย่างรวดเร็วสำหรับโฟลเดอร์
หากต้องการนับบรรทัดอย่างรวดเร็วของแต่ละไฟล์ในโฟลเดอร์โดยใช้ PowerShell โดยไม่จำเป็นต้องแสดงเอาต์พุตโดยละเอียด คุณสามารถใช้สคริปต์บรรทัดเดียวที่เรียบง่ายได้
$folderPath = "C:\MyFolder"
Get-ChildItem $folderPath -Recurse | ForEach-Object { (Get-Content $_.FullName | Measure-Object -Line).Lines }สคริปต์นี้จะส่งออกเฉพาะจำนวนบรรทัดสำหรับแต่ละไฟล์ที่พบในโฟลเดอร์ที่ระบุและโฟลเดอร์ย่อย
การจัดการกับบรรทัดว่าง
หากคุณต้องการแยกบรรทัดว่างออกจากการนับ คุณสามารถกรองออกได้โดยใช้ Where-Object cmdlet ใน PowerShell
$filePath = "C:\MyFolder\file.txt"
$lineCount = (Get-Content $filePath | Where-Object { $_.Trim() -ne "" } | Measure-Object -Line).Lines
Write-Host "The file has $lineCount non-empty lines."บทสรุป
ในบทช่วยสอน PowerShell นี้ ฉันได้อธิบายวิธีการต่างๆ เพื่อ นับบรรทัดในไฟล์ใน PowerShell เช่น รับเนื้อหา, Measure-Object และ < รหัส>Get-ChildItem ฯลฯ

