2017-04-11 5 views
1

지금까지 내 코드는 이것이다 표준 출력에 한 줄에 파일 및 인쇄 한 단어 읽기 :배쉬 :

#!/bin/bash 

for word in $(<$1) 
do 
    echo "$word" 
done 

입력 파일 포함 (SP = 공간, TAB = 탭 및 EOL - 라인의 끝)에있는 :

< SP>시간 < SP>가지고 와서> < SP, < TAB> < SP > < SP> < SP>많은 < SP 말할> < SP>상기> < SP, < SP> < SP> < SP> < SP >물건 : < EOL>

출력됩니다. :

The 
time 
has 
come, 
the 
Walrus 
said, 
to 
speak 
of 
many 
things: 

나는 단어의 기능과 출력에 내 프로그램이 필요가 또는 TAB 문자로 경계 문자의 순서로 정의된다. 따라서 동일한 입력을 사용하여 스크립트를 출력하고 싶습니다.

The 
time 
has 
come, 

the 
Walrus 
said, 


to 
speak 
of 
many 
things: 

달성 방법에 대한 아이디어가 있습니까?

미리 도움을 청하십시오!

+0

/탭으로 구분 된 문자가 있지만 두 번째 출력에는 쉼표가 붙은 단어 뒤에 하나 또는 두 개의 빈 줄이 있지만 아무 곳에서도 언급되지 않았습니다. 명확히 해 주시겠습니까? –

+0

@ BenjaminW. 입력 텍스트에서 볼 수 있듯이 "말한"과 "끝"사이에 공백이 3 개 있습니다. 즉 여분의 공백이 있으면 출력에 여분의 틈이 생깁니다. 이상하게 여겨지는데 100 % 확신 할 수없는 이유가 무엇인지 잘 모르겠지만 – Swallows

답변

1

내가 제대로 목표를 이해한다면, 당신은 라인에 공백과 탭을 설정하는 tr를 사용하여 작업을 수행 할 수 있어야 바꿈 :

그것은 이미 빈의 순서로 단어를 처리하여 출력의 양처럼 보이는
#!/bin/bash 

tr ' \t' '\n' <"$1" 
+0

그런 의미가 있습니다. 도움을 주셔서 감사합니다! – Swallows