728x90
awk 를 사용하다 보면 환경변수를 사용하게 되는 순간도 오는데 그에 대한 답변이다.
이 질문에는 내 답변이 채택되지는 않았고, 채택되신 분의 답변이 훨씬 더 간단하고 보기에도 좋지만, 그래도 이런 방법도 있다는 차원에서 참고할만 하다.
질문
현재 file.txt에
170 A
165 B
140 C
130 D
120 E
100 F
이렇게 정렬되어 있습니다.
그 전에 변수 max 를 170으로 설정하였습니다.
그렇다면, 이 파일에서 170에 해당하는 레코드를 출력하는 방법은
$awk '$1 == $max {print $0}' file.txt 아닌가요?
첫번째 필드들 중에서 max(170)에 해당하는 값이 나오게 하고싶은데 아무것도 출력되지않아요 ㅠㅠ
awk 명령어에 대해서 공부하고싶은데 많이 어렵네요.. 도와주실분 구합니다 ㅠ.ㅠ
답변
$max 는 질문에 나와있는 것 처럼 변수에 저장하였다고 합니다.
이 의미는 아마 환경변수였을 것 같네요.
awk '$1 == $max {print $0}' file.txt
에서 $1과 $0 은 awk 에서 정해져서 사용하는 변수명입니다.
그런데 $max 변수는 awk 와 아무런 상관이 없습니다.
외부의 환경변수를 awk 내에서 사용하고자 할 때에는
큰따옴표 작은따옴표 큰따옴표
"'"$max"'" 로 감싸서 사용하면됩니다
awk '$1 == "'"$max"'" {print $0}' file.txt
또는 아래처럼 사용 가능합니다.
awk '$1 == max {print $0}' max=170 file.txt
참고한 링크
https://kin.naver.com/qna/detail.naver?d1id=1&dirId=10302&docId=402218555&page=1#answer1
** 채택된 답변
max=170 awk -v max=$max '$1 == max {print $0}' file.txt
-v 옵션으로 awk 에서 사용할 변수를 지정하면 됩니다.
728x90
'IT > 네이버지식인' 카테고리의 다른 글
[지식인]CentOS 설치하는데 아이디 설정은 안하고 비번설정만했는데아이디 적으라는 것이 나오는데 뭐라고 적어야 하지요..??? (0) | 2022.05.29 |
---|---|
[지식인]데이터베이스 질문 (0) | 2022.05.28 |
[지식인]리눅스 원하는 값만 추출 (0) | 2022.05.28 |
[지식인]질문 aws ubuntu startx 명령어 사용법 (0) | 2022.05.28 |
[지식인]c언어 기초 질문 (0) | 2022.05.28 |