อินพุตบรรทัดเดียวถึงหลายเอาต์พุตใน Unix


1

ฉันจะใช้ตัวกรองเพื่อแสดงสิ่งที่ชอบได้อย่างไร:

echo "Hello there" |

H
e
l
l
o

t
h
e
r
e

คำตอบ:


11

นี่คือสองสาม:

  1. fold

    echo "Hello there" | fold -w 1
    H
    e
    l
    l
    o
    
    t
    h
    e
    r
    e
    
  2. Perl

    echo "Hello there" | perl -pe 's/(.)/$1\n/g;'
    H
    e
    l
    l
    o
    
    t
    h
    e
    r
    e
    

โพสต์ถูกแก้ไขแล้วฉันต้องการให้มันแสดงตัวอักษรหนึ่งตัวในหนึ่งบรรทัดหรือไม่
Jurgen Malinao

@Znau ขอบคุณน่าเสียดายที่ไม่ใช่สิ่งที่ OP ต้องการ :) มีปัญหาการจัดรูปแบบสำหรับคำถามของพวกเขา แก้ไขแล้วตอนนี้
terdon

@JurgenMalinao ใช่ฉันแก้ไขมัน ถ้าฉันเข้าใจสิ่งที่คุณหมายถึงอย่างถูกต้องคำตอบที่ปรับปรุงควรทำ
terdon

@terdon แน่นอนมันถูกแก้ไข ยังฉันให้ความคิดเห็นของฉัน :)
ลอเรนฟอน Matterhorn

5

คุณสามารถใช้sedการทำเช่นนี้ มันมีน้ำหนักเบากว่า perl เล็กน้อย แต่ก็ยังช่วยให้คุณใช้การแสดงออกปกติเพื่อแสดงความปรารถนาของหัวใจของคุณ

$ echo "Hello world" | sed -r 's/./&\n/g'
H
e
l
l
o

w
o
r
l
d

อาฉันกำลังจะเขียนสิ่งที่น่าเบื่อ :) foldจะเร็วที่สุดแม้ว่าจะไม่มี regex ที่จะจัดการกับ
terdon

@terdon และคุณได้รับ upvote จากฉัน ใช้เวลาสักครู่เพื่อตามล่า&backreference ฉันไม่ได้ใช้สิ่งนี้บ่อยนัก (ฉันสงสัยว่าบางสิ่งเช่นนี้จะเป็นเรื่องสำคัญยิ่งในกรณีใด ๆ )
CVn

4

สิ่งนี้ยังใช้งานได้:

echo "Hello there" | grep -o .
  • . จับคู่อักขระเดี่ยว
  • -o พิมพ์การจับคู่เท่านั้น (แทนที่จะเป็นทั้งเส้น)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.