ฉันจะบันทึกเนื้อหาปัจจุบันของไฟล์ให้น้อยลงได้อย่างไร?


91

หากฉันได้ไพพ์ผลลัพธ์ของคำสั่งlessแล้วตัดสินใจว่าฉันต้องการบันทึกเนื้อหาลงในไฟล์เป็นไปได้หรือไม่

ฉันได้ลองตั้งเครื่องหมายaที่ท้ายบัฟเฟอร์แล้วกลับไปที่ด้านบนและใช้|aviเพื่อส่งเนื้อหาทั้งหมดไปviแต่ก็ไม่ได้ผล


1
เทคนิคเดิมของคุณจะทำงานหากคุณได้รับคำสั่ง vi โหลดจาก stdin |avi -โดยการทำ
โจชอว์

คำตอบ:


102

ในระบบของฉันman lessพูดว่า

       ชื่อไฟล์
              บันทึกอินพุตเป็นไฟล์ มันจะทำงานได้ก็ต่อเมื่ออินพุตเป็น
              ไปป์ไม่ใช่ไฟล์ธรรมดา

ใช้งานได้สำหรับฉัน!


4
อย่างใดนี่ใช้ไม่ได้สำหรับฉัน - การพิมพ์ 'ย้ายหน้าต่างไปทีละบรรทัด ฉันใช้ Mac
benroth

2
@benroth: คุณอาจมีlesskeyไฟล์ที่เปลี่ยนคำสั่งปกติ ดูman lesskey
RedGrittyBrick

8
sไม่ทำงานสำหรับฉันอย่างใดอย่างหนึ่ง แต่-o fileไม่
user1338062

1
และทำไมบนโลกนี้ไม่ได้กล่าวถึงเมื่อฉันพิมพ์ 'h' เพื่อรับความช่วยเหลือแบบโต้ตอบ +1 ถ้าคุณอ่านความช่วยเหลือแบบโต้ตอบและไม่คิดว่าจะปรึกษาman less...
Peter V. Mørch

1
@comfreak: ใช่มันน้อยกว่า 487 ใน Ubuntu 18.04 แต่ไม่น้อยกว่า 481 ใน Debian 9 / ยืด / คงที่
Peter V. Mørch

24

คำตอบที่ยอมรับไม่สามารถใช้งานได้บน Mac - @benroth พูดว่าการกดsเพียงแค่เลื่อนลงบรรทัด - แต่คุณสามารถใช้วิธีการอื่น

ในless --help:

|Xcommand            Pipe file between current pos & mark X to shell command.

และ

A mark is any upper-case or lower-case letter.
Certain marks are predefined:
     ^  means  beginning of the file
     $  means  end of the file

ดังนั้นหากคุณไปที่ด้านบนของบัฟเฟอร์ ( <) จากนั้น:

|$cat > /tmp/foo.txt

เนื้อหาของ buffer /tmp/foo.txtที่จะเขียนออกไป


วิธีนี้มีประโยชน์อย่างยิ่งเมื่อคุณต้องการไพพ์บัฟเฟอร์ปัจจุบันที่ถูกดูผ่านคำสั่งอื่น
Doron Behar

3

เมื่อคุณlessเปิดคุณสามารถบันทึกผลลัพธ์ที่สมบูรณ์ไปยังไฟล์ ชอบvimน้อยสนับสนุนคำสั่ง

เพียงแค่พิมพ์ที่สำคัญsแล้วจะขอให้คุณชื่อของไฟล์ที่คุณต้องการบันทึกเนื้อหาเพียงแค่พิมพ์ชื่อไฟล์และจากนั้นพิมพ์lessEnter

ไชโย


0

ใช้>โอเปอเรเตอร์ ตัวอย่างเช่นless foo.bar > output.txt.


ขอบคุณ @Dror แต่ฉันอยู่ในแอปพลิเคชั่นที่น้อยกว่าไม่ใช่ที่ bash prompt อีกต่อไป
Jonathan Day

ผลงานที่มีค่าสำหรับ Q / A แทนที่จะเริ่มคำถามที่แยกจากกันโดยสิ้นเชิงผู้คนที่ต้องการวิธีเขียนสคริปต์หลายไฟล์ผ่านLess Viewerจะได้รับประโยชน์มากมาย บันทึกชั่วโมงการทำงานของฉัน (หลังจากการค้นหาจำนวนมาก) ขอบคุณ!
LD James

0

ไม่ถ้าคุณเริ่มต้นน้อยลง แต่ถ้าคุณรู้ก่อนที่ yu ต้องการส่งให้น้อยลงและไฟล์คุณสามารถใช้คำสั่ง tee ได้

command | tee out_file | less

ขอบคุณ Mark แต่ฉันกำลังมองหาวิธีการเฉพาะถ้าฉันมีน้อยแล้ว
วัน Jonathan

0

คำตอบของฉันมาสายเกินไปที่จะเชื่อ แต่สำหรับการอ้างอิงในการตอบสนองต่อความกังวลของเบ็นร็อคข้างต้น: สำหรับผู้ใช้ OSX มีตัวเลือกในการดัมพ์เนื้อหาของเพจเจอร์ไปยังล็อกไฟล์โดยใช้ตัวเลือก "-l" (read DASH ELL ) ที่เครื่องหมายโคลอน

เพจเจอร์จะถามล็อกไฟล์ ใส่กุญแจแล้วกด [CR]

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.