반응형
Awk 명령 줄을 사용하여 쉼표로 구분 된 열 인쇄
여기에 문제가 있습니다. awk를 사용하여 텍스트 파일의 열을 인쇄해야합니다. 그러나 열은 공백으로 구분되지 않고 하나의 쉼표 만 사용합니다. 다음과 같이 보입니다.
column1,column2,column3,column4,column5,column6
awk를 사용하여 세 번째 열을 어떻게 인쇄합니까?
시험:
awk -F',' '{print $3}' myfile.txt
여기 -F에서 ","를 필드 구분자로 사용하는 awk에게 말하고 있습니다.
유일한 요구 사항이 모든 줄의 세 번째 필드를 쉼표로 구분하여 인쇄하는 것이라면 cut을 사용할 수 있습니다.
cut -d, -f3 file
-d,
구분 기호를 쉼표로 설정-f3
세 번째 필드 만 인쇄되도록 지정합니다.
이 시도 awk
awk -F, '{$0=$3}1' file
column3
,
필드를 다음으로 나누기,
$0=$3
행을 필드로만 설정3
1
모두 인쇄하십시오. ( 여기에 설명 )
다음과 같이 사용할 수도 있습니다.
awk -F, '{print $3}' file
while IFS=, read -r a a a b; do echo "$a"; done <inputfile
그것은 작은 파일을 빠르게 작동합니다 (<100 줄) 다음 awk가 가 (고가의 호출을 피 적은 리소스를 사용하므로 fork
및 execve
시스템 호출).
Ed Morton의 편집 (답을 가로 채서 죄송합니다.이 문제를 해결하는 더 좋은 방법이 있는지 모르겠습니다) :
셸이 작은 파일의 경우 awk보다 빠르게 실행된다는 신화를 숨기려면 :
$ wc -l file
99 file
$ time while IFS=, read -r a a a b; do echo "$a"; done <file >/dev/null
real 0m0.016s
user 0m0.000s
sys 0m0.015s
$ time awk -F, '{print $3}' file >/dev/null
real 0m0.016s
user 0m0.000s
sys 0m0.015s
정말 작은 파일을 얻으면 awk 스크립트보다 눈 깜짝 할 사이에 쉘 스크립트가 실행되는 것을 볼 수 있지만 누가 신경 쓰나요?
awk 스크립트보다 강력한 셸 스크립트를 작성하는 것이 더 어렵다고 생각하지 않는다면 게시 한 셸 스크립트에서이 버그를 살펴보세요.
$ cat file
a,b,-e,d
$ cut -d, -f3 file
-e
$ awk -F, '{print $3}' file
-e
$ while IFS=, read -r a a a b; do echo "$a"; done <file
$
반응형
'programing tip' 카테고리의 다른 글
조각 내에서 조각 뷰 페이지 표시 (0) | 2021.01.10 |
---|---|
Python : 주어진 날짜의 시작 및 끝 데이터 제공 (0) | 2021.01.10 |
첫 번째, 마지막, 인덱스 루프의 각도 2ng (0) | 2021.01.10 |
객체 배열을 동적으로 할당 (0) | 2021.01.10 |
C #에서 가장 가까운 정수로 float를 반올림하려면 어떻게합니까? (0) | 2021.01.10 |