문자열 추출

문자열 추출

텍스트 모드의 파일이 있습니다.

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##* }

관련 정보