문자열의 첫 번째 단어를 얻는 방법은 무엇입니까?

문자열의 첫 번째 단어를 얻는 방법은 무엇입니까?

다음과 같은 결과 가 나오면 echo * :

file1 file2 file3 ...

내가 원하는 것은 첫 번째 단어를 선택하는 것입니다. 어떻게 진행하나요?

답변1

awk를 통해 파이프하고 첫 번째 단어를 에코하도록 할 수 있습니다.

echo * | head -n1 | awk '{print $1;}'

또는 문자열을 자르고 첫 번째 단어를 선택합니다.

echo *  | head -n1 | cut -d " " -f1

또는 sed를 통해 파이프하여 첫 번째 단어를 제외한 모든 항목을 제거하도록 합니다.

echo * | head -n1 | sed -e 's/\s.*$//'

까다로운 분들을 만족시키기 위해 추가되었습니다 | head -n1. 문자열에 개행 문자가 포함되어 있으면 | head -n1중요한 명령이 전달된 문자열의 첫 번째 단어를 선택하기 전에 첫 번째 줄이 선택됩니다.

답변2

posixy 쉘이 있다고 가정합니다( /bin/sh또는 /bin/bash이를 수행할 수 있음).

all=$(echo *)
first=${all%% *}

이 구성 ${all%% *}은 예시입니다.하위 문자열 삭제. 이 방법은 %%변수의 오른쪽 끝에서 가장 긴 일치 항목(공백 뒤에 아무 것도 없음)을 제거합니다. 문자열 조작에 대해 자세히 읽을 수 있습니다.*all여기.

이 솔루션에서는 구분 기호가 공백이라고 가정합니다. 파일 이름으로 이 작업을 수행하면 공백이 있는 모든 파일이 깨집니다.

답변3

당신이 정말로 첫 번째 것을 원한다고 가정하면파일 이름그리고 처음은 아니지단어, 공백으로 인해 중단되지 않는 방법은 다음과 같습니다.

shopt -s nullglob
files=(*)
printf '%s\n' "${files[0]}"

답변4

이것은 작동합니다:

echo * | grep -o "^\w*\b"

신용https://unix.stackexchange.com/a/57879/3920

관련 정보