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

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
    

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

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).
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.