2014-03-12 4 views
0

또 다른 bash 질문이 있습니다. 나는Bash - 문장을 한 줄씩 출력하십시오.

Today is sunny. I like the sun. It is awesome! 

파일 등을 가지고 ... 그리고 나는 그것이 ?, ., 또는 !을 돌 때까지 각 문자를 출력합니다. 이것은 또한 awk 하나의 라이너가 될 수 있습니까? 나는 인쇄물을 보길 원해.

Today is sunny. 
I like the sun. 
It is awesome! 

답변

1

그냥 레코드 분리 지정해야합니다 : (정확히 필요한 원하지하지만, 흥미) AWK 가까운

awk 'BEGIN {RS="[.!?] *"} {print}' 
+0

작동 않습니다! 나는 아직도 문장 이후의 기간을 인쇄해야한다. char에 의한 print char처럼 char에 의해 그것을 할 수있는 방법이 있는가? (.,?, 또는!)를 본다면 뭔가를 할 수 있을까? – Tree55Topz

+0

확실하지만 awk을 사용하지 않을 것입니다. –

2
echo Today is sunny. I like the sun. It is awesome! | sed 's/[.!?] */&\n/g' 
1

뭔가 :

echo 'Today is sunny. I like the sun. It is awesome!'|awk '1' RS='[.,?]' 

정규 AWK 방법을 :

echo 'Today is sunny. I like the sun. It is awesome!'|gawk 'a=gensub(/(\.|!|\?) */, "\\1\n", "g"){print a}' 
+0

셸 골프의 금메달! – SzG

+0

기간은 제거되지만 ... – SzG

+0

@SzG를 preseve chars로 지정하면 정식 하위 항목이 필요합니다. 내 편집 된 답변보기. – klashxx

1

솔루션은 sed를 사용하여 :

sed 's/\([\?\!\.]\)\s*/\1\n/g' 
1
echo Today is sunny. I like the sun. It is awesome! | awk '{gsub(/([?,.!])/,"&\n");print}' 
관련 문제