![Perl에서 CSV 파일의 일치하는 열에서 행 데이터를 얻으시겠습니까?](https://linux55.com/image/137416/Perl%EC%97%90%EC%84%9C%20CSV%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EC%9D%BC%EC%B9%98%ED%95%98%EB%8A%94%20%EC%97%B4%EC%97%90%EC%84%9C%20%ED%96%89%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC%20%EC%96%BB%EC%9C%BC%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
답변1
다음을 수행해야 합니다.
perl -F, -lane 'print if $F[7] eq "NAB-ITSA-LINUX-7"' URT_Compare_20180715191103.csv
아래에 언급된 세 가지 사항을 처리하면 괜찮을 것입니다.
- "==" 연산자는 피연산자의 수학적 동일성을 테스트하는 데 사용됩니다. 귀하의 경우처럼 문자열 비교를 위해서는
eq
이것이 전부입니다. - 상수 문자열은 따옴표로 묶어야 하며 OTW는 서브루틴으로 처리됩니다.
- 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