Linux
如何格式化此 IP 列表?
我有一個以這種相當簡單的格式分隔的列表:
IPrangestart,IPrangeend,int number,date (delimited by slashes),Name (is dirty, contains spaces, dots, dashes, quotemarks etc)
前三列不能為空。我想將其轉換為標準防火牆阻止可行格式,表示用破折號分隔的隨機數:
IPrangestart-IPrangend
有時這些欄位是空的。對數千行執行此操作的最快和最聰明的方法是什麼?我試過 RegEx
$$ A-Za-z $$對於每個字母和$$ 0-9 $$對於每個數字,但這並不能解決隨機 " . 和上面指定的類似內容的問題… 我試過這個正則表達式,但我不知道如何讓它辨識中間的破折號
(\b25[0-5]|\b2[0-4][0-9]|\b[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}
如果與 ip 相關的列始終存在(根據您的評論),請使用
cut
保留前兩個逗號分隔的列,並替換,
為-
:cut -d, -f1,2 --output-delimiter=-
如果由於某種原因,您無法訪問
GNU cut
fromcoreutils
(我懷疑的事情,因為您用 標記了問題linux
),因此您錯過了該--output-delimiter = -
選項:sed 's/^\([^,]*\),([^,]*).*/\1-\2/' file
awk -F "," 'BEGIN{OFS="-"}{print $1,$2}' File
輸出
IPrangestart-IPrangeend