Điểm:1

Cách chỉ lấy tên miền cấp 2 từ danh sách tên miền phụ

lá cờ ma

Tôi cân gi

Tôi có một danh sách các tên miền như vậy:

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

Tôi chỉ muốn đầu ra lấy các miền cấp hai và không có gì khác, tức là không có cấp 3 trở lên. Đây là những gì tôi đang tìm kiếm từ danh sách ví dụ của tôi ở trên:

ví dụ.com
foo.com
thanh.com

Những gì tôi đã cố gắng

tôi đã thử sử dụng sed, awk, và cắt tỉa như sau:

sed

cat domains.txt | sed 's/\.$//g'
cat domains.txt | sed -r 's/^(.*)_/\1\/; s/.$//g' # điều này xóa ký tự cuối cùng vì lý do nào đó

awk

awk '{ sub(/\.$/, ""); in $NF }' domains.txt
cat domains.txt | awk -F\. '{in $1,$2}' | tr' ' '.' # sẽ không hoạt động vì có tên miền cấp 4

cắt tỉa

cat domains.txt | cắt -d '.' -f[field] # sẽ không hoạt động vì có tên miền cấp 4
bac0n avatar
lá cờ cn
`rev domains.txt | cắt -d . -f-2 | vòng quay`
Justin Washek avatar
lá cờ ma
Điều đó thật dễ dàng một cách khó chịu... cảm ơn bạn rất nhiều vì nhận xét, điều này đã hiệu quả!
bac0n avatar
lá cờ cn
bạn cũng có thể sử dụng grep: `grep -Po '[^.]+\.[^.]+$' domains`
bac0n avatar
lá cờ cn
`trong khi IFS=. đọc -a a; lặp lại ${a[@]:(-2):2}; xong
Justin Washek avatar
lá cờ ma
Tuyệt vời, cảm ơn bạn rất nhiều! Tôi luôn cố gắng học những cách khác nhau để làm mọi việc. Bạn đã rất hữu ích!
Will avatar
lá cờ id
@bac0n - ?bật chúng dưới dạng câu trả lời - nó rõ ràng là hữu ích!
lá cờ cn
Câu trả lời grep cũng sẽ hoạt động với `-E`, không có gì cụ thể về pcre về câu trả lời đó.
bac0n avatar
lá cờ cn
@glennjackman Không chắc có phải chỉ mình tôi không, nhưng `-E` trong một số trường hợp chậm hơn gần như x3 so với `-P`, đặc biệt là chuyển hướng.
Điểm:4
lá cờ cn

Trong trường hợp bạn cần bắt đầu trận đấu từ bên phải, bạn có thể sử dụng điểm neo kết thúc $ để cố định mẫu đến cuối dòng.

grep:

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

sed:

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

awk có một biến được xác định trước có tên NF giữ số lượng trường cho bản ghi hiện tại. Bạn có thể kết hợp các NF biến với bộ xác định trường $ để tham chiếu giá trị thay thế.

awk:

awk -F . -vOFS=. '{print $(NF-1), $NF}' domains.txt

Bạn cũng có thể đảo ngược văn bản cho các lệnh như: đọc hoặc cắt tỉa mà hoàn toàn đọc từ trái sang phải.

vòng quay, cắt:

sửa đổi tên miền.txt | cắt -d . -f1,2 | vòng quay

Bash chỉ ví dụ:

trong khi đọc -r; làm \
    printf %s\n ${REPLY/#${REPLY%.*.*}.}; \
xong < domains.txt

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.