![2개의 변수를 얻기 위해 CSV의 여러 행을 반복하는 방법은 무엇입니까?](https://linux55.com/image/176302/2%EA%B0%9C%EC%9D%98%20%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%96%BB%EA%B8%B0%20%EC%9C%84%ED%95%B4%20CSV%EC%9D%98%20%EC%97%AC%EB%9F%AC%20%ED%96%89%EC%9D%84%20%EB%B0%98%EB%B3%B5%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
사용자 이름과 비밀번호가 포함된 CSV 파일이 있습니다. 파일은 다음과 같습니다.
user1,password1
user2,password2
user3,password3
사용자 이름과 비밀번호를 가져오고 해당 변수를 사용한 다음 다음 사용자 이름과 비밀번호 세트를 가져오고 변수의 내용을 새 변수로 바꾸려면 각 행을 반복해야 합니다.
나는 이 작업을 수행하는 가장 좋은 방법을 찾고 있었지만 스크립팅에 익숙하지 않아 길을 잃었습니다. 나는 둘 다 따로 잡아왔지만 while 루프 내에서 그것들을 사용하는 awk
방법을 찾으려고 노력하고 있습니다 . awk
나는 이것이 좋은 접근 방식이 아닐 수도 있다는 것을 읽고 있습니다.
답변1
당신이 좋은 비밀번호를 가지고 있다고 가정합니다:
user1,",3 ""e`$^~´"
user2,""")& Eu`id`"
user3,ThisIsAlsoAGoodPasswordBecauseItIsLong
그런 다음 CSV를 구문 분석할 수 있는 것이 필요합니다(" 내부 "는 "입니다).
cat user+password.csv | parallel --csv do_stuff {1} {2}
답변2
여기서는 awk가 필요하지 않다고 생각합니다.
#!/bin/bash
while IFS=, read -r user pass; do
# something with "$user" "$pass"
done < path/to/file.csv
답변3
ksh93
파일이 적절한 CSV 파일인 경우 대신 CSV 구문 분석을 지원하는 파일을 사용할 수 있습니다 .bash
#! /usr/bin/env ksh93
while IFS=, read -rS user password; do
something with "$user" and "$password"
done
이렇게 입력하면
user,"a""b
c,d"
$user
그러면 user
및 $password
가 올바르게 설정됩니다 a"b<LF>c,d
.