2017-05-04 3 views
1

나는 다음과 같은 문자열을 가지고 가정.쉘 스크립트에서 각 문자 뒤에 새로운 행을 삽입하려면 어떻게해야합니까?</p> <pre><code>abcdefghi </code></pre> <p>나는 결과가되도록 사용할 수있는 명령 :</p> 난 그냥 그렇게 코딩을 시작 <pre><code>a b c d e f g h i </code></pre> <p>나는 누군가가 나를 도울 수 있기를 바랍니다

+3

[새 줄에 모든 문자를 배치]의 사용 가능한 복제 (http://stackoverflow.com/questions/9899049/ new-line에 모든 문자 배치) – iamauser

답변

4

은 줄 바꿈을 삽입 fold라는 도구가있다, 당신은 모든 문자 다음에 하나를 추가하려면 알 수 있습니다 :

$ fold -w 1 <<< 'abcdefghi' 
a 
b 
c 
d 
e 
f 
g 
h 
i 

<<<here string을 나타내는 데 사용됩니다. 쉘이 그를 지원하지 않는 경우, 당신이 할 수있는 파이프 대신 fold에 :

echo 'abcdefghi' | fold -w 1 
0

당신이 마지막에 빈 줄 수 있도록 마지막 편지 후에 여분의 줄 바꿈을 추가 할 것입니다하지만 당신은 sed을 사용할 수 있습니다 :/오래된/이 새로운 /가 나오지됩니다

$ sed 's/./&\ 
/g' <<<abcdefghi 
a 
b 
c 
d 
e 
f 
g 
h 
i 

$ 

들 "대체"명령. 예전의쪽에있는 패턴 .은 모든 문자와 일치합니다. 쪽에있는 기호 &은 "무엇이든 old 패턴이 일치합니다"를 의미합니다. 우리는 교체품과 일치하는 것을 포함 시켜서 물건을 추가하고 제거하지는 않습니다.

일치하는 각 문자를 개행 문자로 따라 가기를 원하지만 개행 문자가 sed 명령을 종료하고 앞에 백 슬래시를 넣지 않으면 구문 오류가 발생합니다.

그래서 같은 문자 (&)와 그 뒤에 개행 문자 (\ + 개행 문자)가있는 문자 (.)를 대체합니다. 결국 g은 각 줄의 첫 번째 줄뿐만 아니라 모든 줄 바꿈을 대체하는 것을 의미합니다.

데모에서는 here-string을 사용합니다.이 문자열은 대부분의 최신 쉘에 포함되어 있지만 전부는 아닙니다. 당신은 echo abcdefghi | sed '...'으로도 할 수 있습니다.

0
grep -o . <<< "abcdefghi"