Perl에서 CSV 파일의 일치하는 열에서 행 데이터를 얻으시겠습니까?

Perl에서 CSV 파일의 일치하는 열에서 행 데이터를 얻으시겠습니까?

CSV 파일을 첨부할 수 없어 내용이 명확하도록 이미지를 첨부합니다. awk라이너를 사용했지만 perl출력이 나오지 않습니다. 열 번호와 열 텍스트/값이 일치하는 행을 가져오는 방법을 알려주세요.

명령 대신 스크립트로 작성할 수 있습니까?

$ perl -F, -lane 'print if $F[8]==WINDOWS2000-2' Compare_20180715191103.csv

그리고

$ awk -F, -v OFS=, '$8 == "WINDOWS2000-2 "{ print }' Compare_20180715191103.csv

여기에 이미지 설명을 입력하세요.

답변1

다음을 수행해야 합니다.

perl -F, -lane 'print if $F[7] eq "NAB-ITSA-LINUX-7"' URT_Compare_20180715191103.csv

아래에 언급된 세 가지 사항을 처리하면 괜찮을 것입니다.

  1. "==" 연산자는 피연산자의 수학적 동일성을 테스트하는 데 사용됩니다. 귀하의 경우처럼 문자열 비교를 위해서는 eq이것이 전부입니다.
  2. 상수 문자열은 따옴표로 묶어야 하며 OTW는 서브루틴으로 처리됩니다.
  3. Perl 배열 인덱싱은 0부터 시작하므로 실제로 배열의 요소를 $F[8]참조합니다 .ninth@F

기본 가정은 다음과 같습니다.

  • 8차전은 부분 비교가 아닌 전체 필드 비교다. 즉, 콘텐츠는 문자 오류 없이 여기에 표시된 것과 정확히 같아야 합니다.
  • 필드가 분할되고 필드 수가 변경되므로 모든 필드에 쉼표를 사용하지 마십시오.
  • 줄 끝이 Unix 줄 끝( LF = \n)인 것이 바람직하다는 점을 제외하고는 중요하지 않습니다. 그렇지 않은 경우 먼저 변환해야 합니다.

답변2

1 단계: 먼저 8열의 내용을 확인하세요.

awk -F, '{print $8}' URT_Compare_20180715191103.csv

2 단계: 그런 다음 원하는 패턴을 찾아보세요.

awk -F, '{print $8}' URT_Compare_20180715191103.csv | grep "WINDOWS2000-2"

3단계: 2단계에서 원하는 결과를 얻었으면 다음 코드를 시도해 보세요.

awk -F,  '$8 ~ "WINDOWS2000-2" ' URT_Compare_20180715191103.csv

관련 정보