텍스트 모드의 파일이 있습니다.
AAAA - BBBB (CCCC) - (DDDD)
저는 첫 번째 그룹 AAAA - BBBB만 사용하는 데에만 관심이 있었습니다(예: AAAA 및 BBBB). 다음을 사용하여 "(CCCC) - (DDDD)"를 잘라냈습니다.
FIRST_SET="${STRING%% (*}"
"AAAA - BBBB"를 알려주세요.
평생 두 번째 "BBBB"에서 "AAAA"를 추출할 수 없습니다.
미리 감사드립니다.
답변1
두 개의 셸 변수에 최종 결과를 원하고, 단어를 공백으로 구분하고, 단어에 공백이 포함되지 않으며, 변수에 IFS
기본값이 있다고 가정해 보겠습니다.
$ read -r word1 dash word2 junk <file
$ printf 'word1 = "%s"\nword2 = "%s"\n' "$word1" "$word2"
word1 = "AAAA"
word2 = "BBBB"
여기에 사용된 명령은 read
첫 번째 단어를 변수로 읽고 word1
두 번째 단어를 변수로 읽 습니다 word2
. 단어 사이의 대시는 변수로 읽혀지고 dash
끝에 있는 쓰레기는 이름이 지정된 변수에 배치됩니다 junk
.
답변2
첫 번째 단계와 마찬가지로:
FIRST_SET="${STRING%% (*}"
FIRST_WORD=${FIRST_SET%% *}
SECOND_WORD=${FIRST_SET##* }