awk 명령어 설명 좀 부탁드립니다.(자세히용)

heybuddy의 이미지

안냐세요!! 리눅스 초보입니다.
다름이 아니라 공부 중에
ls -l /home | grep "^d" | awk "{print "tar cvfpz "$9"\.tar\.gz" "\/home\/"$9}'
라는 것이 나왔는데요...
grep "^d"까지는 알거든여?! 근데 awk "{print "tar cvfpz "$9"\.tar\.gz" "\/home\/"$9}'의 의미를
잘 모르겠어요
print명령어랑 $9,\ 및 {}중괄호여~~
print,$,\,{}는 only awk에서만 사용되는것인가요?? 아님 다른 명령어에서도 같은 의미로 사용되나요??
고수님들!! 도와주세요

lusilis의 이미지

ls -l /home | grep "^d" 에서 출력된 값을 공백 기준으로 첫번째 필드부터 $1 $2 순서로 계산하고 awk '{print "출력값"}' 이런 경우는 " " 사이의 값이 그대로 출력 됩니다..

$9 = test라고 생각 했을 때 awk '{print "tar cvfpz "$9"\.tar\.gz" "\/home\/"$9}' 값은..

tar cvfpz test.tar.gz /home/test 이런 결과가 나오겠네요..

'{print }' - awk 기본 문법
$number - 출력된 값의 필드 넘버
\ - 특수 문자를 뜻하는 규약 (위의 경우처럼 "" 사이에 들어가면 생략 가능하고 vi등에서도 사용합니다..)

추가로 awk -F . '{print $1}' 이런식으로 -F 옵션을 사용하면 필드값을 어떤걸 기준으로 계산할지를 정의할 수 있습니다..

neocoin의 이미지

저 명령어 마지막에 | sh 가 생략된거 인가요?