쉘 스크립트에서 공백 전후에 문자열을 분할하는 방법은 무엇입니까?


답변:


31

jasonwryan의 제안 외에도 다음을 사용할 수 있습니다 cut.

echo $var | cut -d' ' -f1

cutecho공백 구분 기호 ( -d ' ')를 사용하여 출력하고 첫 번째 필드를 출력합니다 ( -f1)


그것은 작동하지 않습니다. 나는 이미 그것을 사용했다. 명령을 찾을 수 없습니다.
surbhi March

3
@surbhi 명령을 찾을 수 없습니까? cut표준 유틸리티입니다. 스크립트에 다른 곳에 오류가있을 수 있습니다. 더 일반적으로“작동하지 않습니다”라고 말하지 마십시오. 항상 어떤 코드를 실행했는지, 정확히 무엇이 발생했는지, 복사하여 붙여 넣기 오류 메시지를 말하십시오.
Gilles 'SO- 악마 그만해'

이 답변은 가장 간결하고 직접적인 방법이므로 받아 들여야합니다. 물론 주어진 예보다 복잡한 경우에는 작동하지 않습니다.
Dan Nguyen

10

이 작업을 수행하는 깔끔한 방법은 bash 배열을 사용하여 공백으로 문자열을 분할하는 것입니다. 대괄호를 사용하여 간단히 배열을 선언 할 수 있습니다.

var="129 148     181"
vars=( $var )
echo "First  word of var: '${vars[0]}'"
echo "Second word of var: '${vars[1]}'"
echo "Third  word of var: '${vars[2]}'"
echo "Number of words in var: '${#vars[@]}'"

이것은 명령을 찾을 수 없습니다
surbhi

bash를 사용하는 것에 달려 있습니다. 다른 쉘을 사용하는 경우 작동하지 않을 수 있습니다. echo $SHELL표시해야합니다 : /bin/bash또는 유사합니다.
gogoud

zsh; (
TonyH

이에서 작업을 수행 zsh을 zoom="one two three"; declare -a zoomie=( $( echo $zoom | cut -d' ' -f1- ) ); echo ${zoomie[2]};
TonyH
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.