![문자열의 첫 번째 단어를 얻는 방법은 무엇입니까?](https://linux55.com/image/29195/%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%98%20%EC%B2%AB%20%EB%B2%88%EC%A7%B8%20%EB%8B%A8%EC%96%B4%EB%A5%BC%20%EC%96%BB%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
다음과 같은 결과 가 나오면 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]}"