In this Leetcode Valid Phone Numbers problem solution we have given a text file file.txt that contains a list of phone numbers (one per line), write a one-liner bash script to print all valid phone numbers. You may assume that a valid phone number must appear in one of the following two formats: (xxx) xxx-xxxx or xxx-xxx-xxxx. (x means a digit). You may also assume each line in the text file must not contain leading or trailing white spaces.
First Problem solution.
#!/usr/bin/env bash
while read line; do
if [[ "$line" =~ ^((([0-9]{3}) )|[0-9]{3}-)[0-9]{3}-[0-9]{4}$ ]]; then
echo $line
fi
done < "file.txt"
Second Problem solution.
grep '[(d)]{3,5}[ -]?d{3}-d{4}$' file.txt
Third Problem solution.
grep -e "^[0-9]{3}-[0-9]{3}-[0-9]{4}$" -e "^([0-9]{3}) [0-9]{3}-[0-9]{4}$" file.txt