AWK로 CSV를 구문 분석하여 HTML 출력 생성

AWK로 CSV를 구문 분석하여 HTML 출력 생성

다음과 같이 쉼표로 구분된 필드 행이 포함된 데이터 파일이 있습니다.

United Kingdom, GB, +44

파일의 각 줄에 대해 다음 출력을 생성하고 싶습니다.

<option value="GB">United Kingdom +44</option>

awk를 사용하여 다음과 같은 결과를 얻었지만 꺾쇠 괄호를 추가한 후 출력이 엉망이 되었습니다.

BEGIN{FS=",";}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
{                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
    print "<option value=\"" $2 "\">";                                                                                                                                                                                                                         

}

답변1

awk의 printf기능은 포함된 따옴표와 관련하여 사용하기 더 쉬울 수 있습니다.

awk -F, '{printf("<option value=\"%s\">%s %s</option>\n", $2, $1, $3)}'

문제는 각 필드 사이에 공백이 있다는 것입니다. 이 gsub기능을 사용하여 각 필드를 다듬을 수 있습니다 .

awk -F, '{gsub(/^ +| +$/,"", $2); printf("<option value=\"%s\">%s %s</option>\n", $2, $1, $3)}'

또는 더 쉬운 방법은 필드 구분 기호를 변경하는 것입니다: awk -F' *, *' '{printf("%s %s\n", $2, $1, $3)}'

여러 필드를 잘라야 하는 경우 상황에 따라 루프나 함수를 사용하는 것이 더 나을 수 있습니다. 보다https://stackoverflow.com/questions/9985528/how-can-i-trim-white-space-from-a-variable-in-awk더 많은 정보를 위해서.

답변2

명령

awk -F "," '{print "<option value="$2">United Kingdom "$3"</option>"}' filename| sed 's/GB/"&"/g'

산출

<option value= "GB">United Kingdom  +44</option>

관련 정보