Wejście jednowierszowe do wyjścia wieloliniowego w systemie Unix

1

Jak mogę użyć filtra do wyświetlenia czegoś takiego:

echo „Cześć tam” |

H
e
l
l
o

t
h
e
r
e
Jurgen Malinao
źródło

Odpowiedzi:

11

Oto kilka:

  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
    
terdon
źródło
Post był edytowany, chciałem, aby wyświetlał jedną literę w jednym wierszu?
Jurgen Malinao
@Znau dzięki, niestety nie tego chciał OP :). Wystąpił problem formatowania z ich pytaniem. Naprawiono teraz,
terdon
@JurgenMalinao, tak, zredagowałem to. Jeśli poprawnie zrozumiałem, co masz na myśli, zaktualizowana odpowiedź powinna to zrobić.
terdon
@terdon rzeczywiście był edytowany. nadal trzymam swój komentarz :)
Lorenzo Von Matterhorn
5

Możesz użyć seddo tego. Jest nieco lżejszy niż Perl, ale nadal pozwala ci używać wyrażeń regularnych do wyrażania pragnień twojego serca.

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

w
o
r
l
d
CVn
źródło
Ach, właśnie miałem napisać sed :). foldbędzie najszybszy, ponieważ nie ma do czynienia z wyrażeniem regularnym.
terdon
@terdon I zarobiłeś ode mnie głos. Minęło kilka minut, aby wyśledzić &odniesienie wsteczne; Nie używam sed bardzo często do tego rodzaju rzeczy. (Wątpię coś takiego byłoby wydajność krytyczny w każdym jednak przypadku.)
CVN
4

Działa to również:

echo "Hello there" | grep -o .
  • . dopasowuje pojedynczy znak.
  • -o drukuje tylko dopasowanie (zamiast całej linii).
Dennis
źródło