다음과 같이 쉼표로 구분된 여러 줄의 필드가 포함된 데이터 파일이 있습니다.
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>