2010-04-10 5 views
2

문자열의 마지막 20자를 인쇄해야하지만 전체 단어 만 인쇄해야합니다. 구분 기호는 공백 ""입니다. 의이 예를 생각해 보자 :리눅스 꼬리 만 전체 단어

문자열을 =
에코 $ 문자열 "빠른 갈색 여우가 게으른 개 점프"| 꼬리는

반환 s over the lazy dog

을 -c20. 그리고 대신 over the lazy dog을 반환해야합니다. 그 일을 성취하는 방법을 알고 있습니까? 감사!

답변

3
echo $string | perl -ne 'print "$1\n" if /\b(\S.{0,20})$/' 
+0

아주 좋습니다. 감사합니다. – Gargauth

+2

grep 사용 : echo $ string | egrep -o '\ <. {0,20} $' –

+0

@UdiM : 답을해야합니다. –

2
echo $string | rev | cut -d ' ' -f -20 
+0

* first * twenty * words *를 출력합니다. –

+0

롤 ... 잘 목격, rev와 함께 변경,하지만 그것은 여전히 ​​muptiple 라인 이상 작동하지 않습니다 ... 연구합니다 ... – Stefan

1

이 외부 프로그램을 사용하지 않고도> 3.2 배쉬에서 작동 :

[[ $string =~ \ (.{0,20})$ ]] 
result="$BASH_REMATCH[1]" 

나는 기초로 UdiM의 grep 버전을 사용했다.

관련 문제