awk는 파일을 한 줄씩 반복하고 값을 사용하여 해당 줄의 값이 포함된 csv 파일에서 줄을 가져옵니다.

awk는 파일을 한 줄씩 반복하고 값을 사용하여 해당 줄의 값이 포함된 csv 파일에서 줄을 가져옵니다.

2개의 파일이 있는데 첫 번째 파일은 다음과 같습니다.

값.txt

[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

데이터.csv

"username","email"
"user","[email protected]"
"user1","[email protected]"
"user2","[email protected]"
"user4","[email protected]"
"user456","[email protected]"
"user789","[email protected]"
"user5","[email protected]"
"user","[email protected]"
"user5","[email protected]"
"user","[email protected]"

출력이 다음과 같기를 원합니다.

"user","[email protected]"
"user1","[email protected]"
"user2","[email protected]"
"user4","[email protected]"
"user5","[email protected]"
"user5","[email protected]"

어떡해:

awk -F',' '$2 ~ /[email protected]/ {print $0}' data.csv > test1.csv

그러면 다음을 포함하는 새 파일 test1.csv가 생성됩니다.

"user5","[email protected]"

[email protected]파일을 반복하고 value.txt 줄로 바꾸는 방법을 알 수 없습니다.

답변1

awk -F, '
  NR==FNR{ a["\""$1"\""]; next }
  $2 in a
' values.txt data.csv

첫 번째 입력 파일: 각 필드를 배열에 저장 a하고 각 키에 접두사/접미사를 추가합니다 ". 계속 녹음하세요 next.

두 번째 입력 파일: 두 번째 필드가 배열에 있는지 테스트합니다 a. 조건이 true인 경우 기본 작업은 레코드를 인쇄하는 것입니다.

관련 정보