defaults read -g AppleLanguages
다음과 같은 것을 생성합니다.
(
엔,
독일
)
첫 번째 요소(이 경우 "en")만 추출하고 싶습니다.
defaults read -g AppleLanguages | awk '/\(/ , /,/'
그러나 awk에는 항상 검색 패턴이 포함됩니다. "en"만 생성하려면 어떻게 해야 하나요?
답변1
두 번째 줄만 인쇄하면 됩니다. 이를 위해 다음과 같은 다양한 도구를 사용할 수 있습니다.
sed
defaults read -g AppleLanguages | sed -n '2s/,//p;' file
설명하다:는
2
"다음 명령을 두 번째 줄에서만 실행"을 의미합니다. 일반 출력을 억제합니다-n
(명시적으로 지시하지 않는 한 아무 것도 인쇄되지 않습니다). 바꾸기(s///
)는 쉼표를 제거하고/p
대체가 발생한 끝 부분에 줄을 인쇄합니다.perl
defaults read -g AppleLanguages | perl -ne 's/,// && print if $.==2'
설명하다
s/,//
: 현재 줄 번호($.
가 2 )이면 첫 번째 쉼표( )를 제거하고 해당 줄을 인쇄합니다. 이는-n
"입력 파일을 한 줄씩 읽고 주어진 스크립트를-e
각 줄에 적용한다는 의미입니다.유닉스 도구
defaults read -g AppleLanguages | head -n 2 | tail -n 1 | tr -d ,
설명하다:
head -n 2
처음 두 줄을 인쇄하고tail -n 1
마지막 줄(즉, 파일의 두 번째 줄)을 인쇄하고tr -d ,
쉼표를 제거합니다.awk
defaults read -g AppleLanguage | awk 'NR==2{sub(",","");print}'
설명하다:
NR==2{}
"두 번째 줄에서 괄호 안의 내용만 실행하세요.gsub(",","")
첫 번째 쉼표를 제거하세요." 라는 뜻입니다.
답변2
다음을 수행할 수 있습니다.
awk -F, '/[^(]/{print $1;exit}'
설명하다:
-F,
:,
필드 구분자로 처리됩니다 .[^(]
:(
문자가 아닌 문자가 하나 이상 포함된 줄에 적용됩니다.print $1; exit
:첫 번째 필드를 인쇄하고 즉시 종료합니다awk
(따라서 패턴과 일치하는 첫 번째 줄만 인쇄됩니다).