일부 출력을 생성하는 스크립트가 있습니다. 다음과 같은 IP 주소에 대한 출력을 확인하고 싶습니다.
159.143.23.12
134.12.178.131
124.143.12.132
if (IPs are found in <file>)
then // bunch of actions //
else // bunch of actions //
fgrep
좋은 생각 인가요 ?
bash를 사용할 수 있습니다.
답변1
예, 원하는 대로 사용할 수 있는 옵션/도구가 많이 있습니다. 방금 이것을 시도했는데 작동합니다.
ifconfig | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b"
따라서 grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b"
grep을 사용하여 출력에서 IP 주소를 가져올 수 있습니다.
답변2
예를 들어 파일이 호출된 경우 ips
다음과 같이 작성할 수 있습니다.
while read -r ip
do
if [[ $ip == "$1" ]]; then
shift
printf '%s\n' 'action to take if match found'
else
printf '%s\n' 'action to take if match not found'
fi
done < ips
그런 다음 스크립트에 따라 매개변수를 전달할 수 있습니다.
./myscript 159.143.23.12 134.12.178.131 124.143.12.132 124.143.12.132
답변3
이 답변을 바탕으로 답변을 시작합니다.
예, 원하는 대로 사용할 수 있는 옵션/도구가 많이 있습니다. 방금 이것을 시도했는데 작동합니다.
grep -oE "\b([0-9]{1,3}.){3}[0-9]{1,3}\b" a를 구성하면 grep -oE "\b를 사용할 수 있습니다. ( [0- 9]{1,3}.){3}[0-9]{1,3}\b" 출력에서 IP 주소를 가져옵니다.
답변을 전체 길이 IPv6 등으로 변환합니다.
fgrep -oE "\b([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}\b" -- file
/nnn을 유지하려는 경우(있는 경우):
fgrep -oE "\b([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}(/[0-9]{1,3}){0,1}\b" -- file
"::"을 포함하는 IPv6의 축약 버전도 있습니다.
더 많은 IPv6 답변을 보려면 여기에서 확인할 수 있습니다. https://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses
답변4
ip -4 addr show eth1 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'