Linux

如何格式化此 IP 列表?

  • March 2, 2022

我有一個以這種相當簡單的格式分隔的列表:

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 cutfrom coreutils(我懷疑的事情,因為您用 標記了問題linux),因此您錯過了該--output-delimiter = -選項:

sed 's/^\([^,]*\),([^,]*).*/\1-\2/' file
awk -F "," 'BEGIN{OFS="-"}{print $1,$2}' File

輸出

IPrangestart-IPrangeend

引用自:https://unix.stackexchange.com/questions/692483