문자열 추출

문자열 추출

텍스트 패턴이 포함된 파일이 있습니다.

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

관련 정보