Score:1

วิธีดึงเฉพาะโดเมนระดับ 2 จากรายการโดเมนย่อย

ธง ma

สิ่งที่ฉันต้องการ

ฉันมีรายชื่อโดเมนดังนี้:

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

ฉันต้องการให้ผลลัพธ์คว้าโดเมนระดับสองเท่านั้นและไม่ต้องการอย่างอื่น เช่น ไม่มีโดเมนระดับ 3 หรือสูงกว่า นี่คือสิ่งที่ฉันกำลังมองหาจากรายการตัวอย่างด้านบน:

ตัวอย่าง.คอม
ฟู.คอม
บาร์.คอม

สิ่งที่ฉันพยายาม

ฉันได้ลองใช้ เสด, อึดอัด, และ ตัด ดังนี้

เสด

cat domains.txt | sed 's/\.$//g'
cat domains.txt | sed -r 's/^(.*)_/\1\/; s/.$//g' # เป็นการลบอักขระตัวสุดท้ายด้วยเหตุผลบางประการ

อึดอัด

awk '{ ย่อย (/\.$/, ""); พิมพ์ $NF }' domains.txt
cat domains.txt | awk -F\ '{พิมพ์ $1,$2}' | tr' ''.' # จะไม่ทำงานเนื่องจากมีโดเมนระดับที่ 4

ตัด

cat domains.txt | ตัด -d '.' -f[field] # จะไม่ทำงานเนื่องจากมีโดเมนระดับที่ 4
bac0n avatar
cn flag
`โดเมน rev.txt | ตัด -d . -f-2 | รอบ
Justin Washek avatar
ma flag
มันง่ายมากจนน่ารำคาญ... ขอบคุณมากสำหรับความคิดเห็น มันได้ผล!
bac0n avatar
cn flag
คุณสามารถใช้ grep ได้เช่นกัน: `grep -Po '[^.]+\.[^.]+$' domains`
bac0n avatar
cn flag
`ในขณะที่ IFS=. อ่าน -a a; ทำ echo ${a[@]:(-2):2}; เสร็จแล้ว
Justin Washek avatar
ma flag
ยอดเยี่ยม ขอบคุณมาก! ฉันมักจะเรียนรู้วิธีต่างๆในการทำสิ่งต่างๆ คุณมีประโยชน์อย่างมาก!
Will avatar
id flag
@bac0n - ?pop เป็นคำตอบ - มันมีประโยชน์อย่างเห็นได้ชัด!
cn flag
คำตอบ grep ควรใช้ได้กับ `-E` เช่นกัน ไม่มีอะไรเฉพาะเจาะจงเกี่ยวกับคำตอบนั้น
bac0n avatar
cn flag
@glennjackman ไม่แน่ใจว่าเป็นเพียงฉันหรือไม่ แต่ในบางกรณี `-E` ช้ากว่า `-P` เกือบ x3 โดยเฉพาะอย่างยิ่งการเปลี่ยนเส้นทาง
Score:4
ธง cn

ในกรณีที่คุณต้องการเริ่มการแข่งขันจากทางด้านขวา คุณสามารถใช้จุดยึดท้ายได้ $ เพื่อตรึงรูปแบบไว้จนสุดเส้น

เกรป:

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

sed:

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

อึดอัด มีตัวแปรที่กำหนดไว้ล่วงหน้าชื่อ เอ็น.เอฟ ถือจำนวนฟิลด์สำหรับเรกคอร์ดปัจจุบัน คุณสามารถรวม เอ็น.เอฟ ตัวแปรกับตัวระบุฟิลด์ $ เพื่ออ้างอิงค่าแทน

อึดอัด:

awk -F . -vOFS=. '{พิมพ์ $(NF-1), $NF}' domains.txt

คุณยังสามารถย้อนกลับข้อความสำหรับคำสั่งเช่น: อ่าน หรือ ตัด ที่อ่านจากซ้ายไปขวาล้วนๆ

รอบตัด:

rev domains.txt | ตัด -d . -f1,2 | รายได้

ตัวอย่างเฉพาะ Bash:

ขณะอ่าน -r; ทำ \
    printf %s\n ${ตอบกลับ/#${ตอบกลับ%.*.*}.}; \
เสร็จแล้ว < domains.txt

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา