![awk를 사용하여 csv 파일에 md5sum 값을 추가하는 방법](https://linux55.com/image/182472/awk%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20csv%20%ED%8C%8C%EC%9D%BC%EC%97%90%20md5sum%20%EA%B0%92%EC%9D%84%20%EC%B6%94%EA%B0%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
다음 형식의 csv 파일이 있습니다.
1,123-456,IND
2,234-567,US
3,345-678,AUS
4,333-444,SA
루프를 사용하고 싶지 않고 아래와 같은 출력 형식으로 AWK 명령을 사용하여 각 라인에 대해 md5sum 값을 생성하고 싶습니다.
1,123-456,IND,<md5 value>
2,234-567,US,<md5 value>
3,345-678,AUS,<md5 value>
4,333-444,SA,<md5 value>
답변1
awk에 대해서는 전혀 다루지 않고 쉘을 직접 사용할 것입니다.당신은 말한다"awk 명령을 사용해 보고 싶습니다." 따라서 그럴 만한 이유가 있다고 생각합니다.
awk -v OFS=',' '{
cmd = "echo \047" $0 "\047 | md5sum"
val = ( (cmd | getline line) > 0 ? line : "FAILED")
close(cmd)
sub(/ .*/,"",val)
print $0, val
}' file
1,123-456,IND,df6c21260b315d90fbbb6da2969b721c
2,234-567,US,764fd46b443bb125e48f154f964ee1d7
3,345-678,AUS,3b769d86ef698ca08de9dccabe402f02
4,333-444,SA,345b7e3e29df314844a7625e5b6e3486
위의 내용은 각 행에 에코 버전이 중단될 수 있는 내용이 포함되어 있지 않다고 가정합니다.