สมมติว่าในระหว่างวันทำงานของคุณคุณจะพบรูปแบบต่อไปนี้ของเอาต์พุตคอลัมน์จากคำสั่งบางคำใน bash (ในกรณีของฉันจากการดำเนินการsvn st
ในไดเรกทอรีทำงาน Rails ของฉัน):
? changes.patch
M app/models/superman.rb
A app/models/superwoman.rb
เพื่อทำงานกับเอาต์พุตของคำสั่งของคุณ - ในกรณีนี้ชื่อไฟล์ - จำเป็นต้องมีการแยกวิเคราะห์บางอย่างเพื่อให้คอลัมน์ที่สองสามารถใช้เป็นอินพุตสำหรับคำสั่งถัดไป
สิ่งที่ฉันได้ทำคือการใช้awk
เพื่อรับที่คอลัมน์ที่สองเช่นเมื่อฉันต้องการลบไฟล์ทั้งหมด (ไม่ใช่ว่าเป็น usecase ทั่วไป :) ฉันจะทำ:
svn st | awk '{print $2}' | xargs rm
เนื่องจากฉันพิมพ์สิ่งนี้บ่อยๆคำถามธรรมชาติคือ: มีวิธีที่สั้นกว่า
หมายเหตุ: สิ่งที่ฉันถามเป็นหลักเป็นคำถามคำสั่งเชลล์แม้ว่าตัวอย่างที่เป็นรูปธรรมของฉันอยู่ในเวิร์กโฟลว์ svn ของฉัน หากคุณรู้สึกว่าเวิร์กโฟลว์นั้นโง่และแนะนำวิธีการอื่นฉันอาจไม่ลงคะแนนให้คุณ แต่คนอื่น ๆ อาจเนื่องจากคำถามที่นี่เป็นวิธีการรับเอาต์พุตคอลัมน์คำสั่ง n-th ใน bash อย่างสั้นที่สุดเท่าที่จะทำได้ . ขอบคุณ :)