파일의 특정 열을 필터링하고 싶은데46총. 난 그냥부터 시작하고 싶어25~까지46, 다음 방법으로:
원하는 출력:
Column25 Column26 ... Column47
Column25 Column26 ... Column47
Column25 Column26 ... Column47
올바른 awk 명령이 있습니다.
cat -n <(awk '{n=17;if(NR==1)n=25;for(i=n;i<=NF;i++) a[$i]++} END{for(val in a) print val,a[val]}' filelog.txt)
위의 명령은 다음에서 가져온 것입니다.25이 경우 마지막 열까지47. 내가 원하는 모든 필드의 모든 문자열을 인쇄하면서 잘 작동합니다.
하지만 여기에 문제가 있습니다.
인쇄하려는 열은 다음과 같습니다.공간다음 방법과 같습니다.
Column25 Column26 ... Column47
Column25 Column26 [...] Column47
[:space:]Column26 [:space:] Column47
[:space:][:space:] [:space:] [:space:]
Column25 [:space:] [:space:] [:space:]
문제는 다음과 같습니다특정 열을 모두 인쇄하면 다른 열의 문자열이 공백과 함께 원하는 열로 전달됩니다.
예를 들어:
Column25 Column26 ... Column47
Column25 Stringsofcolumn12 Manystrings Stringsofcolumn21
Stringsofcolumn23 Stringsofcolumn5 ofmanycolumns Stringsofcolumn22
Column25 Stringsofcolumn16 blablabla anothermanystrings
이 문제를 방지하기 위해 인쇄하려는 열의 공백을 제거할 수 있는 방법이 있습니까?
노트:
열의 문자열은 헤더의 텍스트와 동일합니다. 예: column28
콘텐츠 문자열이 있는 경우 문자열은 column28
리터럴입니다. 하지만 지금은 그게 중요하지 않다고 생각합니다. 단지 코멘트일 뿐입니다.
감사합니다!
답변1
너가 원하는게 그거야?
cat thefile | tr '\t' ' '| tr -s " " | cut -d' ' -f25-46
문제가 해결되면 정답으로 표시해 주세요.