Linux2011. 7. 21. 21:45
cut은 연속한 delimiter를 각각 따로 보게 된다. 그래서
파일에
word:  3      4
word:      5      8
처럼 적혀 있는 경우에는
grep "word" file.txt | cut -d ' ' -f 3
처럼 해서는 원하는 결과를 얻을 수 없는 경우도 있다. 이럴 때는 awk을 쓰는 수밖에 없다. awk은 기본적으로 연속한 separator를 하나로 인식하게 된다. 그래서
grep "word" file.txt | awk '{printf $3"\n"}'
처럼 하면 원하는 대로 동작한다. awk에서 seperator를 지정할 수도 있는데, 다음을 비교해보자.
grep "word" file.txt | awk '{printf $3"\n"}'
grep "word" file.txt | awk -F "[ ]" '{printf $3"\n"}'
grep "word" file.txt | awk -F "[ ]*" '{printf $3"\n"}'
2번째 처럼하면 연속한 separator를 별개로 인식하고, null field도 생길 수 있게 된다.
Posted by asdfzxcv