[英]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.