найдите совпадающие URL-адреса в строке, затем сократите их до доменного имени

найдите совпадающие URL-адреса в строке, затем сократите их до доменного имени

У меня есть файл журнала, для которого я пишу скрипт, чтобы он показывал только определенные поля вывода. Последнее, что мне нужно, это сократить URL-адреса, чтобы он останавливал строку, когда они достигают ".com," ".edu," ".org" и т. д. Есть ли способ сделать это с помощью grep? Мне следует обратить внимание на другие команды?

Пример вывода:

student1234 "GET https://www.noname.com:443/login"
student4567 "GET http:// www.noip.edu:80/start/noname"
student8901 "GET http:// www.testing.org:80/search/change"

Мне нужно следующее:

student1234 "GET https://www.noname.com
student4567 "GET http:// www.noip.edu
student8901 "GET http:// www.testing.org

решение1

Вариантов много, выбирайте тот, который вам нравится.

С использованием grep:

grep -o '^[^:]\+:[^:]\+' file.txt

с использованием cut:

cut -d: -f1-2 file.txt

с использованием awk:

awk -F: '{ print $1$2 }' file.txt

с использованием sed:

sed 's/^\([^:]\+:[^:]\+\).*/\1/' file.txt

с помощью оболочки:

while IFS=: read -r i j k; do echo "$i$j"; done <file.txt

с использованием perl:

perl -pe 's/^([^:]+:[^:]+).*/$1/' file.txt

Пример:

$ grep -o '^[^:]\+:[^:]\+' file.txt
student1234 "GET https://www.noname.com
student4567 "GET http:// www.noip.edu
student8901 "GET http:// www.testing.org

$ cut -d: -f1-2 file.txt                                                
student1234 "GET https://www.noname.com
student4567 "GET http:// www.noip.edu
student8901 "GET http:// www.testing.org

$ awk -F: '{ print $1$2 }' file.txt                 
student1234 "GET https//www.noname.com
student4567 "GET http// www.noip.edu
student8901 "GET http// www.testing.org

$ sed 's/^\([^:]\+:[^:]\+\).*/\1/' file.txt            
student1234 "GET https://www.noname.com
student4567 "GET http:// www.noip.edu
student8901 "GET http:// www.testing.org

$ while IFS=: read -r i j k; do echo "$i$j"; done <file.txt
student1234 "GET https//www.noname.com
student4567 "GET http// www.noip.edu
student8901 "GET http// www.testing.org

$ perl -pe 's/^([^:]+:[^:]+).*/$1/' file.txt
student1234 "GET https://www.noname.com
student4567 "GET http:// www.noip.edu
student8901 "GET http:// www.testing.org

Связанный контент