텍스트 파일에 홀수만 나열하는 방법은 무엇입니까? [폐쇄]

텍스트 파일에 홀수만 나열하는 방법은 무엇입니까? [폐쇄]

Linux에 2개의 열이 있는 파일이 있는데 첫 번째 열에는 IP 주소가 있고 두 번째 열에는 포트 번호가 있습니다.

IP 주소와 함께 홀수 포트 번호만 나열하고 싶습니다.

답변1

다음 awk줄에서는 결과를 얻으려면 하나의 명령만 필요합니다.

awk '$2%2!=0 {print $0}'  file.txt

홀수 포트 번호와 해당 IP 주소를 표시해야 하므로 결과가 0이 아니면 열 2 번호를 2로 나누면 됩니다.

답변2

파일이 탭으로 구분되어 있다고 가정합니다(tsv).

cut -f 2 abcd.txt | egrep '[13579]$'

그러면 문제가 해결될 것입니다.

다른 구분 기호나 고정 너비를 사용하는 경우 man cut(특히 -d-c옵션)을 참조하세요.

보너스: | uniq중복을 제거하려면 추가하세요.


편집하다:cutIP 주소를 삭제하지 않으려면 이 섹션을 무시하십시오.egrep '[13579]$' abcd.txt


편집하다:설명을 추가하세요

cut라인별로 작동하고 출력하려는 ​​라인 부분을 선택할 수 있는 유틸리티입니다.

옵션을 사용하여 문자 위치로 지정하거나 -c(고정 길이 필드에 유용함) 필드 지정을 사용할 수 있습니다 -f(데이터가 필드로 구분된 경우).

필드 구분 기호를 사용하는 경우 -f문자로 가정하거나 를 사용하여 다른 문자를 지정할 수 있습니다 -d.

echo -e 'abcdefghij\nabcdefghij' # two lines
echo -e 'abcdefghij\nabcdefghij' | cut -c 2-4,7 # selects characters from position 2 to 4 and 7

echo -e 'aa,bb,cc,dd\nAA,BB,CC,DD' # space-delimited fields
echo -e 'aa,bb,cc,dd\nAA,BB,CC,DD' | cut -d , -f 3 # prints only the 3rd field

egrep(와 동일 grep -e) 주어진 내용과 일치하는 행을 선택합니다.정규식. 표현의 [13579]$뜻은줄 끝에 홀수 숫자가 있습니다.이므로 egrep홀수로 끝나는 줄만 표시됩니다.

정규식은 텍스트를 조작할 때 예쁘고 유용하므로 많은 명령줄 유틸리티, 텍스트 편집기 및 프로그래밍 언어에서 찾을 수 있습니다. 처음에는 신비해 보일 수 있지만 실제로 전문가가 될 필요는 없습니다. 대부분의 작업에서는 주제에 대해 조금 읽고 실험해 보면 주제의 요점을 빠르게 이해할 수 있습니다.


편집하다:@HaukeLaging에서 제안한대로 (1|3|5|7|9)$다음으로 교체하십시오.[13579]$

관련 정보