สวัสดี
อาจเป็นสิ่งนี้ง่ายมาก แต่ฉันไม่ได้รับจุดในขณะนี้ ใน Linux, shell, ได้รับไฟล์ข้อความ, ฉันจะทำอะไรได้บ้าง, ชื่อไฟล์ cat ดังนั้นฉันเห็นเฉพาะบรรทัดแรก, บรรทัดที่สาม, 5, 7, 9 และอื่น ๆ
หากไม่ได้อยู่กับแมวด้วยคำสั่งอื่น
ขอบคุณ
สวัสดี
อาจเป็นสิ่งนี้ง่ายมาก แต่ฉันไม่ได้รับจุดในขณะนี้ ใน Linux, shell, ได้รับไฟล์ข้อความ, ฉันจะทำอะไรได้บ้าง, ชื่อไฟล์ cat ดังนั้นฉันเห็นเฉพาะบรรทัดแรก, บรรทัดที่สาม, 5, 7, 9 และอื่น ๆ
หากไม่ได้อยู่กับแมวด้วยคำสั่งอื่น
ขอบคุณ
คำตอบ:
การใช้awk
:awk 'NR % 2 == 0' filename
แก้ไข: ลบออก{print}
ตามที่แสดงในคำตอบของ ghostdog74 และแสดงความคิดเห็นโดย Roberto Bonvallet
2 == 0
ด้วย2 == 1
สำหรับสิ่งที่ตรงกันข้าม
หรืออะไรทำนองนั้น
sed -n 'p;n' filename
sed
สำหรับคำอธิบายมองขึ้นหน้าคนสำหรับ
sed
เวอร์ชั่นพกพาที่ทำให้ฉันปวดใจ
sed -n '1d;p;n'
สำหรับคู่ตัวอย่างเช่น
ใช้ sed:
sed -n 1~2p filename
sed
ไม่ใช่ค่าเริ่มต้น
sed
คู่มือGNU gnu.org/software/sed/manual/html_node/Addresses.html#Addressesบอกว่า“ ขั้นตอนแรก ~ ส่วนขยาย GNU นี้…” --posix
มันไม่ได้พูดถึง เมื่อฉันพยายามgsed --posix -n 1~2p
(GNU sed 4.2.1) gsed: -e expression #1, char 2: unknown command: ‘~’
ผมได้รับ
awk '{if(NR%2!=0)print}' myfile
2 วิธีที่คุณสามารถทำได้ด้วย awk
$ awk '{getline;print}' file # the equivalent of the selected sed answer
$ awk 'NR%2==0' file
หรือมีแค่เปลือกหอย
i=1; while read -r line; do [ $((i++ % 2)) -eq 0 ] && echo $line; done <"file"
การค้นหาอย่างง่ายใน Google แสดงลิงค์นี้: http://bash.cyberciti.biz/academic/write-odd-even-line-file/
คุณเพียงแค่ปรับแต่งมันเล็กน้อย
2 เซนต์ของฉัน
ยังไม่ได้ทดสอบสิ่งนี้ (ดูเหมือนจะไม่ทำงานบน Mac OS X) แต่ GNU sed รองรับfirst~step
เป็นการเลือกที่อยู่ดังนั้นตัวอย่างเช่น:
sed -n 1~2p file
จะเริ่มที่บรรทัดแรกและพิมพ์บรรทัดอื่นหลังจากนั้น
sed
ในการติดตั้งฐาน
ไม่สามารถทดสอบพบลิงค์: cat -n $ 1 | grep "$ ODDRE" | cut -b 8-> oddfile $$
ODDRE
ตั้งไว้ แต่คำตอบนั้นจะใช้ได้ก็ต่อเมื่อไฟล์น้อยกว่าหนึ่งล้านบรรทัด
คุณสามารถใช้คำสั่งเหล่านี้เพื่อต้องการผลลัพธ์
awk 'NR% 2 == 1'
sed -ne '1 ~ 2p'
ls -l
ที่นี่
{print}
เป็นการกระทำเริ่มต้นดังนั้นawk 'NR % 2 == 0' < myfile
ก็เพียงพอแล้ว