Puncte:1

Cum să luați numai domeniile de nivel 2 dintr-o listă de subdomenii

drapel ma

Ceea ce am nevoie

Am o listă de domenii de genul:

a.example.com
b.foo.com
a.b.bar.com

Vreau doar ca ieșirea să ia domeniile de nivel al doilea și nimic altceva, adică nici un nivel al 3-lea sau mai mare. Acesta este ceea ce caut din lista mea de exemple de mai sus:

exemplu.com
foo.com
bar.com

Ce am încercat

Am încercat să folosesc sed, awk, și a tăia după cum urmează:

sed

Cat domains.txt | sed 's/\.$//g'
Cat domains.txt | sed -r 's/^(.*)_/\1\/; s/.$//g' # aceasta elimină ultimul caracter din anumite motive

awk

awk '{ sub(/\.$/, ""); printează $NF }' domains.txt
Cat domains.txt | awk -F\. „{printați $1,$2}” | tr ' ' '.' # nu va funcționa deoarece există domenii de nivel 4

a tăia

Cat domains.txt | cut -d '.' -f[câmp] # nu va funcționa deoarece există domenii de nivel 4
bac0n avatar
drapel cn
`rev domains.txt | tăiat -d . -f-2 | rev`
Justin Washek avatar
drapel ma
A fost enervant de ușor... mulțumesc mult pentru comentariu, a funcționat!
bac0n avatar
drapel cn
ați putea folosi și grep: `grep -Po '[^.]+\.[^.]+$' domains`
bac0n avatar
drapel cn
`în timp ce IFS=. citeste -a a; face eco ${a[@]:(-2):2}; Terminat
Justin Washek avatar
drapel ma
Minunat, mulțumesc mult! Sunt mereu dispus să învăț moduri diferite de a face lucrurile. Ai fost extrem de util!
Will avatar
drapel id
@bac0n - ?Afișează-le ca răspuns - evident că a fost de ajutor!
drapel cn
Răspunsul grep ar trebui să funcționeze și cu `-E`, nimic specific pcre despre acesta.
bac0n avatar
drapel cn
@glennjackman Nu sunt sigur dacă sunt doar eu, dar `-E` este în unele cazuri aproape x3 mai lent decât `-P`, în special redirecționarea.
Puncte:4
drapel cn

În cazurile în care trebuie să începeți meciul din dreapta, puteți utiliza o ancoră de capăt $ pentru a fixa modelul la capătul liniei.

grep:

grep -Po '[^.]+\.[^.]+$' domenii.txt

sed:

sed 's/.*\.\([^.]\+\.[^.]\+\)$/\1/' domains.txt

awk are o variabilă predefinită numită NF păstrând numărul de câmpuri pentru înregistrarea curentă. Puteți combina NF variabilă cu specificatorul câmpului $ pentru a face referire la valoarea în schimb.

awk:

awk -F . -vOFS=. „{printați $(NF-1), $NF}” domains.txt

De asemenea, puteți inversa textul pentru comenzi precum: citit sau a tăia care se citește pur de la stânga la dreapta.

turație, tăiere:

rev domains.txt | tăiat -d . -f1,2 | rev

Bash doar exemplu:

în timp ce se citește -r; face \
    printf %s\n ${REPLY/#${REPLY%.*.*}.}; \
facut <domains.txt

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.