簡體   English   中英

從文件中提取以IP地址開頭的行

[英]Extract lines starting with IP address from file

在Shell腳本語言中,我必須從給定文件中僅提取以IP地址開頭的行

示例文件X包含:

text  
10.0.0.1  host1  
some other text 10.1.1.2  
172.22.0.25 host1 host1.example.com  
12.8  
123  T  
260.1.1.1

預期產量:

10.0.0.1 host1  
172.22.0.25 host1 host1.example.com

假設有效的IP地址的八位位組的范圍是0到255(某些IP地址受保護,但我沒有解決這些數字),則此代碼應執行您想要的操作:

grep -Eh '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' /folder/file | awk -F'.' '$1 <=255 && $2 <= 255 && $3 <= 255 && $4 <= 255' > /tmp/result

結果存儲在/ tmp / result

perl

$ perl -lane 'if($F[0] =~ /^(\d+\.){3}\d+$/){ $m=1; foreach (split/\./,$F[0]){$m=0 if $_ > 255} print if $m }' fileX 
10.0.0.1  host1  
172.22.0.25 host1 host1.example.com  
  • 在空格上分割輸入行,保存在@F數組中
  • if($F[0] =~ /^(\\d+\\.){3}\\d+$/)檢查第一個字段是否有四組數字,以分隔.
    • $m=1初始化匹配變量
    • foreach (split/\\./,$F[0])在上拆分第一個字段. 遍歷他們
    • $m=0 if $_ > 255清除匹配變量(如果任何值大於255)
    • print if $m打印輸入行,如果第一個字段中的所有值都小於或等於255

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM