awk 쉘스크립트 질문입니다.
글쓴이: jip102 / 작성시간: 목, 2014/05/29 - 11:14오후
안녕하세요.쉘 초보입니다,
아래와 같이 세로 값을 가로로 바꾸는 명령을 awk 로 찾아 봤는데 의미가 이해 안되는 부분이 있어서 질문을 드립니다.
cat test.txt
AAAA,
BBBB,
CCCC,
awk 'ORS=NR%3?" ":"\n"' test.txt
AAAA, BBBB, CCCC 이렇게 변형이 되는데요
생각되기는 레코드 갯수를 3으로 나누어 한열로 만드는거 같은데
여기서 NR%3 다음에 ?(물음표가) 왜 오는지요?
그리고 : 는 의미가 뭐길래 꼭 붙여야 되는지. 정규식 표현에 좀 초보여서
awk 'ORS=NR%3?" ":"\n"' test.txt 에 대해서 자세히 설명좀 부탁드려요
Forums:
?:는 삼항연산자고 C랑 동일합니다.
?:는 삼항연산자고 C랑 동일합니다. http://en.wikipedia.org/wiki/%3F:#C
삼항 연산을 if else로 풀어쓰는건 간단하지만, 위의 프로그램은 풀어쓸려면 이렇게 되겠네요.
awk는 일반적으로 '패턴 { 액션 }' 의 구조를 가지는데 '{ 액션 }' 부분이 없으면 print $0가 기본액션이고요, 패턴부분에는 if구문을 사용할수 없으므로 if를 사용하려면 액션쪽으로 가져오거나, 원래 글에서 처럼 삼항연산자를 패턴쪽에서 사용하면 되겠네요. 이런식으로도 바꿔쓸수 있겠고요.
다르게 바꿔쓸수 있는 방법은 더 많을거예요.
댓글 달기