텍스트 패턴이 포함된 파일이 있습니다.
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##* }