이 IP 목록의 형식을 지정하는 방법은 무엇입니까?

이 IP 목록의 형식을 지정하는 방법은 무엇입니까?

매우 간단한 형식의 쉼표로 구분된 목록이 있습니다.

IPrangestart,IPrangeend,int number,date (delimited by slashes),Name (is dirty, contains spaces, dots, dashes, quotemarks etc)

처음 세 열은 비워둘 수 없습니다. 나는 이것을 대시로 구분된 난수를 나타내는 표준 방화벽 차단 가능 형식으로 변환하고 싶습니다.

IPrangestart-IPrangend

때로는 필드가 비어 있습니다. 수천 개의 행에 대해 이 작업을 수행하는 가장 빠르고 현명한 방법은 무엇입니까? 각 문자에 대해 [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}

답변1

ip와 관련된 열이 항상 존재하는 경우(귀하의 의견에 따라) cut처음 두 개의 쉼표로 구분된 열을 유지하고 다음 ,으로 바꾸십시오 -.

cut -d, -f1,2 --output-delimiter=-

GNU cut어떤 이유로 from 에 액세스할 수 없는 경우 coreutils(질문에 를 태그했기 때문에 의심스럽습니다 linux) 다음 옵션을 놓칠 수 있습니다 --output-delimiter = -.

sed 's/^\([^,]*\),([^,]*).*/\1-\2/' file

답변2

awk -F "," 'BEGIN{OFS="-"}{print $1,$2}' File

산출

IPrangestart-IPrangeend

관련 정보