각 글자를 별도의 줄로 나누는 방법은 무엇입니까?
예를 들어 "StackOver"
보고 싶은 경우
S
t
a
c
k
O
v
e
r
나는 bash를 처음 사용하기 때문에 어디에서 시작할지 전혀 모른다.
답변
나는 사용할 것이다 grep
:
$ grep -o . <<<"StackOver"
S
t
a
c
k
O
v
e
r
또는 sed
:
$ sed 's/./&\n/g' <<<"StackOver"
S
t
a
c
k
O
v
e
r
그리고 끝에 빈 공간이 문제가된다면 :
sed 's/\B/&\n/g' <<<"StackOver"
이 모든 것은 GNU / Linux를 가정합니다.
답변
텍스트를 세로로 인쇄하려는 경우 문자 대신 그래 핀 클러스터를 분리 할 수 있습니다. 예를 들어 e
급성 악센트가있는 a를 사용하는 경우 :
-
그래 핀 클러스터를 (
e
의 급성 악센트 것 하나 개 그래 핀 클러스터) :$ perl -CLAS -le 'for (@ARGV) {print for /\X/g}' $'Ste\u301phane' S t é p h a n e
(또는
grep -Po '\X'
PCRE 지원으로 빌드 된 GNU grep 사용) -
문자 사용 (여기서는 GNU 사용
grep
) :$ printf '%s\n' $'Ste\u301phane' | grep -o . S t e p h a n e
-
fold
은 문자를 구분하기위한 것이지만 GNUfold
는 멀티 바이트 문자를 지원하지 않으므로 대신 바이트를 구분합니다.$ printf '%s\n' $'Ste\u301phane' | fold -w 1 S t e � � p h a n e
에 StackOver ASCII 문자로 구성 (문자 당 한 바이트, 그래 핀 클러스터 당 하나 개의 문자 때문에), 세 가지 모두 같은 결과를 줄 것이다.
답변
상자에 perl6이 있는 경우 :
$ perl6 -e 'for @*ARGS -> $w { .say for $w.comb }' 'cường'
c
ư
ờ
n
g
로케일에 관계없이 작업하십시오.
답변
많은 awk
버전으로
awk -F '' -v OFS='\n' '{$1=$1};1' <<<'StackOver'
답변
아래는 일반적인 것입니다 :
$ awk -F '' \
'BEGIN { RS = ""; OFS = "\n"} {for (i=1;i<=NF;i++) $i = $i; print }' <file_name>
답변
echo StackOver | sed -e 's/./&\n/g'
S
t
a
c
k
O
v
e
r
답변
bash에서 답변을 구체적으로 요청했기 때문에 다음을 순수 bash에서 수행하는 방법이 있습니다.
while read -rn1; do echo "$REPLY" ; done <<< "StackOver"
이것은 ” here document ” 의 끝에 줄 바꿈 문자를 붙 입니다. 이를 피하고 bash 루프를 사용하여 문자를 계속 반복 printf
하려면 줄 바꿈을 피하십시오.
printf StackOver | while read -rn1; do echo "$REPLY" ; done