ฉันมีตัวอย่างไฟล์ / etc / passwd ดังนี้:
tom:x:1000:1000:Work:/home/tom:/bin/bash
george:x:1000:1000:Work:/home/george:/bin/bash
bla:x:1000:1000:Work:/home/bla:/bin/bash
boo:x:1000:1000:Work:/home/boo:/bin/bash
bee:x:1000:1000:Work:/root/list:/bin/bash
/home/
ฉันพยายามที่จะแสดงรายชื่อผู้ใช้ทั้งหมดที่มีบ้านในโฟลเดอร์
ฉันเขียน
cat ~/Desktop/e.txt |awk -F ":" '{if ($6 ~/^/home/) print $1;}'
โดยที่ e.txt เป็นข้อความที่ฉันคัดลอกมาที่นี่
ฉันเข้าใจว่ามีปัญหากับแบ็กสแลชซึ่งเป็นอักขระการหลบหนี แต่ฉันจะแก้ไขได้อย่างไรเพื่อให้สามารถแสดงรายการเหล่านั้นในหนึ่งบรรทัดของคำสั่งได้
grep home e.txt | cut -d ":" -f 1
@ArpitAgarwal ขอแสดงความยินดีกับรางวัล UUOC ของคุณ อย่างไรก็ตามนี่ไม่ใช่ทางออกที่ดี จะเกิดอะไรขึ้นถ้ามีบริการ "โฮมแบ็คอัพ" ซึ่งทำงานภายใต้ผู้ใช้ที่แยกต่างหากซึ่งตั้งชื่อตาม daemon? นั่นเป็นสิ่งที่ผิดพลาด
cat > tool
ตัวแปรของบรรทัดคำสั่งดังกล่าวเพราะสามารถปรับปรุงความชัดเจนโดยการรักษาทิศทางซ้าย - ขวา ของการประมวลผลอินพุทเอาท์พุทของห่วงโซ่ท่อ มันมีประสิทธิภาพน้อยกว่า แต่แทบจะทุกครั้ง นอกจากนี้ยังทำให้การเพิ่มแถบความคืบหน้าที่เกี่ยวข้องและมีประโยชน์เมื่อทำงานอย่างชัดเจนมากโต้ตอบ (เพียงแทนที่cat
ด้วยpv
ถ้ามีการติดตั้ง)
cat
จะใช้เครื่องมือเช่นawk
หรือsed
หรือสิ่งที่คล้ายกันเพราะพวกเขาสามารถให้ชื่อไฟล์เป็นอาร์กิวเมนต์