!["[...]"가 포함된 패턴 뒤의 첫 번째 단어를 추출합니다.](https://linux55.com/image/62249/%22%5B...%5D%22%EA%B0%80%20%ED%8F%AC%ED%95%A8%EB%90%9C%20%ED%8C%A8%ED%84%B4%20%EB%92%A4%EC%9D%98%20%EC%B2%AB%20%EB%B2%88%EC%A7%B8%20%EB%8B%A8%EC%96%B4%EB%A5%BC%20%EC%B6%94%EC%B6%9C%ED%95%A9%EB%8B%88%EB%8B%A4..png)
grep
패턴을 일치시킨 후 첫 번째 단어를 추출하려고 하면 문제가 발생합니다.
예를 보여 드리겠습니다.
cat test.txt
[profile dev]
xxx
xxx
[profile prod]
xxx
xxx
이제 "profile" 뒤에 있는 단어를 추출하여 결국 변수에 할당하고 싶습니다.
grep
사용해 보았는데 awk
단어만 추출할 수 없는 것 같습니다.
grep -oP '(?<=profile\s/)\w+' /test.txt
또한 아무것도 반환하지 않습니다 awk
.
awk '/^profile / {print $1}' /text.txt
어쩌면 괄호 때문일 수도 있고, 아니면 잘 모르겠습니다. 제안해 주실 수 있나요?
답변1
"profile"이라는 단어가 로깅을 시작하지 않기 때문에 awk 모드가 실패 [profile
하지만...
awk '/^\[profile/ {gsub(/]/,""); print $2}' test.txt
dev
prod
또 다른 방법은 배열을 로드하는 것입니다 split
. 다음을 사용하십시오.
awk -F'[][]' '/profile/ {p=split($2,profiles," "); print profiles[2]}' test.txt
dev
prod